解决Jupyter notebook中.py与.ipynb文件的import问题


Posted in Python onApril 21, 2020

在jupyter notebook中,因为其解析文件的方式是基于json的,所以其默认保存的文件格式不是.py而是.ipynb。而.ipynb文件并不能简单的import进.py或者.ipynb文件中,这就为开发带来了极大不便。因为在jupyter notebook中,一定要是在默认的.ipynb下才能有一系列的特性支持,比如自动补全,控制台等待,而.py文件只能通过文本编辑器修改,非常非常不便。

因为.ipynb可以import .py的module,所以其中一个解决方法是将已经写好的.ipynb格式的module转换成.py文件。在写好的.ipynb文件的最后新建一个cell,写入代码如下:

try:  
  !jupyter nbconvert --to python file_name.ipynb
  # python即转化为.py,script即转化为.html
  # file_name.ipynb即当前module的文件名
except:
  pass

然后在当前目录下会生成一个同名的.py文件,这个module可以在其他.ipynb中被import。但这样转化出的.py文件中有时候会保留上述代码。如果要完全避免的话,可以专门另写一个转换文件,集中存放所有文件的转换语句。

补充知识:jupyter notebook的project管理——.ipynb中调用.py文件

做课题和数据挖掘竞赛用python比较多,比较常用的是在服务器终端输入jupyter notebook --ip 0.0.0.0,打开jupyter notebook的一个后台,并在本地windows电脑浏览器进入该服务端写python代码。

将.ipynb和.py结合,可以使得jupyter notebook的工程文件目录更有条理,一些函数可以定义在.py文件中,需要调用这些文件时,就导入到.ipybn中执行。

那在jupyter notebook中调用同,怎么在.ipynb.py中调用.py文件呢?

举个栗子:

在同一个目录下,有call_hello.ipynb和hello.py两个文件:

解决Jupyter notebook中.py与.ipynb文件的import问题

hello.py中定义了hello函数如下:

def hello():
print('say hello');

在call_hello.ipynb中调用hello()函数:

from hello import *
hello()

输出: say hello

但是修改.py文件中的代码后,必须在ipynb中reload模块,才会生效。

如果hello.py中的代码修改成:

def hello():
print('say hello,bye');

在call_hello.ipynb中再次调用hello()函数,依然输出:say hello

重新导入hello模块:

from imp import reload
reload(hello)
hello()

这时候会输出:say hello, bye

bingo!

以上这篇解决Jupyter notebook中.py与.ipynb文件的import问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 初始化多维数组代码
Sep 06 Python
Python中最大最小赋值小技巧(分享)
Dec 23 Python
基于Django用户认证系统详解
Feb 21 Python
python 利用栈和队列模拟递归的过程
May 29 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
基于python的ini配置文件操作工具类
Apr 24 Python
将tensorflow模型打包成PB文件及PB文件读取方式
Jan 23 Python
Django --Xadmin 判断登录者身份实例
Jul 03 Python
让你相见恨晚的十个Python骚操作
Nov 18 Python
python常量折叠基础知识点讲解
Feb 28 Python
写一个Python脚本自动爬取Bilibili小视频
Apr 24 Python
pandas中对文本类型数据的处理小结
Nov 01 Python
TensorFLow 数学运算的示例代码
Apr 21 #Python
jupyter修改文件名方式(TensorFlow)
Apr 21 #Python
Python基于requests实现模拟上传文件
Apr 21 #Python
Ubuntu中配置TensorFlow使用环境的方法
Apr 21 #Python
基于jupyter代码无法在pycharm中运行的解决方法
Apr 21 #Python
如何基于python对接钉钉并获取access_token
Apr 21 #Python
python用TensorFlow做图像识别的实现
Apr 21 #Python
You might like
PHP4实际应用经验篇(6)
2006/10/09 PHP
PHP读取xml方法介绍
2013/01/12 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
PHP正则验证Email的方法
2015/06/15 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
PHP 实现链式操作
2021/03/09 PHP
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
2011/02/14 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
利用PHP实现递归删除链表元素的方法示例
2020/10/23 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
Python中enumerate函数代码解析
2017/10/31 Python
小白入门篇使用Python搭建点击率预估模型
2018/10/12 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
Python面向对象程序设计之继承、多态原理与用法详解
2020/03/23 Python
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
驾驶员岗位职责
2014/01/29 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
三爱活动实施方案
2014/03/19 职场文书
药品营销策划方案
2014/06/15 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
解除施工合同协议书
2014/10/17 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书