解决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的正则表达式re模块的常用方法
Mar 09 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
Nov 08 Python
Python实现的计数排序算法示例
Nov 29 Python
python机器学习理论与实战(六)支持向量机
Jan 19 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
Jan 23 Python
深入分析python中整型不会溢出问题
Jun 18 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
pytorch 常用线性函数详解
Jan 15 Python
Matlab如何实现矩阵复制扩充
Jun 02 Python
Python anaconda安装库命令详解
Oct 16 Python
Python 正则模块详情
Nov 02 Python
python playwright 自动等待和断言详解
Nov 27 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实现图形显示Ip地址的代码及注释
2014/01/20 PHP
php中将一个对象保存到Session中的方法
2015/03/13 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
JavaScript加强之自定义event事件
2013/09/21 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
vue在路由中验证token是否存在的简单实现
2019/11/11 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
python获取豆瓣电影简介代码分享
2014/01/16 Python
Python、Javascript中的闭包比较
2015/02/04 Python
Python中字符串对齐方法介绍
2015/05/21 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
Python实现的各种常见分布算法示例
2018/12/13 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
python实现猜拳游戏
2020/03/04 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
深入了解Python 变量作用域
2020/07/24 Python
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
Parfumdreams芬兰:购买香水和化妆品
2021/02/13 全球购物
北大自主招生自荐信
2013/10/19 职场文书
会计系个人求职信范文分享
2013/12/20 职场文书
环保倡议书格式范文
2014/05/14 职场文书
法学专业毕业生求职信
2014/06/12 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
免职通知
2015/04/23 职场文书
2015年加油站工作总结
2015/05/13 职场文书
婚庆主持词大全
2015/06/30 职场文书
学子宴致辞大全
2015/07/27 职场文书