解决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的web框架中的Model的教程
Apr 29 Python
简介Python的collections模块中defaultdict类型的用法
Jul 07 Python
Python内置函数 next的具体使用方法
Nov 24 Python
python爬虫_实现校园网自动重连脚本的教程
Apr 22 Python
利用python将pdf输出为txt的实例讲解
Apr 23 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
Jul 09 Python
Python Flask前后端Ajax交互的方法示例
Jul 31 Python
python利用Opencv实现人脸识别功能
Apr 25 Python
Django Sitemap 站点地图的实现方法
Apr 29 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
python opencv将表格图片按照表格框线分割和识别
Oct 30 Python
Python面向对象编程之类的概念
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
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
详解PHP版本兼容之openssl调用参数
2018/07/25 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
PHP设计模式之抽象工厂模式实例分析
2019/03/25 PHP
jQuery技巧总结
2011/01/01 Javascript
jquery及原生js获取select下拉框选中的值示例
2013/10/25 Javascript
js判断客户端是iOS还是Android等移动终端的方法
2013/12/11 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
js数组去重的hash方法
2016/12/22 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
详解webpack + react + react-router 如何实现懒加载
2017/11/20 Javascript
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
Vue实现日历小插件
2019/06/26 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
深入理解webpack process.env.NODE_ENV配置
2020/02/23 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
python获取图片颜色信息的方法
2015/03/18 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
python读取yaml文件后修改写入本地实例
2020/04/27 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
制作部班长职位说明书
2014/02/26 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
工作说明书范文
2014/05/07 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
学习十八届四中全会精神思想汇报
2014/10/23 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
MySQL新手入门进阶语句汇总
2022/09/23 MySQL