解决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版微信红包分配算法
May 04 Python
python中的格式化输出用法总结
Jul 28 Python
python基础教程之Filter使用方法
Jan 17 Python
Python读写及备份oracle数据库操作示例
May 17 Python
python微信好友数据分析详解
Nov 19 Python
对python函数签名的方法详解
Jan 22 Python
python 判断文件还是文件夹的简单实例
Jun 10 Python
python安装virtualenv虚拟环境步骤图文详解
Sep 18 Python
Python基于paramunittest模块实现excl参数化
Apr 26 Python
pyecharts在数据可视化中的应用详解
Jun 08 Python
Python基于Webhook实现github自动化部署
Nov 28 Python
解析python中的jsonpath 提取器
Jan 18 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
php Ajax乱码
2008/04/09 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
phpnow php探针环境检测代码
2014/11/04 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
分享五个PHP7性能优化提升技巧
2015/12/07 PHP
用jquery来定位
2007/02/20 Javascript
JavaScript使用技巧精萃[代码非常实用]
2008/11/21 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
移动端H5开发 Turn.js实现很棒的翻书效果
2016/06/20 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
Python 多线程的实例详解
2017/09/07 Python
python简单实例训练(21~30)
2017/11/15 Python
django的model操作汇整详解
2019/07/26 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
Python 寻找局部最高点的实现
2019/12/05 Python
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
在职研究生自我鉴定
2013/10/16 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
小学生作文批改评语
2014/12/25 职场文书
反腐倡廉观后感
2015/06/08 职场文书
2015最新婚礼主持词
2015/06/30 职场文书