解决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 translator使用实例
Sep 06 Python
跟老齐学Python之复习if语句
Oct 02 Python
Python文件和目录操作详解
Feb 08 Python
将Python中的数据存储到系统本地的简单方法
Apr 11 Python
Python黑帽编程 3.4 跨越VLAN详解
Sep 28 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
详解Python 序列化Serialize 和 反序列化Deserialize
Aug 20 Python
python TKinter获取文本框内容的方法
Oct 11 Python
教你如何编写、保存与运行Python程序的方法
Jul 12 Python
python爬虫 爬取超清壁纸代码实例
Aug 16 Python
Python使用matplotlib 模块scatter方法画散点图示例
Sep 27 Python
python中os包的用法
Jun 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
11个PHP 分页脚本推荐
2011/08/15 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
浅析php工厂模式
2014/11/25 PHP
jquery 双色表格实现代码
2009/12/08 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
webpack入门必知必会
2017/01/16 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
javascript简单实现深浅拷贝过程详解
2019/10/08 Javascript
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python动态加载模块的3种方法
2014/11/22 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python中正则表达式详解
2017/05/17 Python
Python之py2exe打包工具详解
2017/06/14 Python
python实现发送邮件功能
2017/07/22 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
解决Keras自带数据集与预训练model下载太慢问题
2020/06/12 Python
python实现图像外边界跟踪操作
2020/07/13 Python
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
德国户外商店:eXXpozed
2020/07/25 全球购物
语文教育专业推荐信范文
2013/11/25 职场文书
监督检查工作方案
2014/05/28 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
毕业欢送会致辞
2015/07/29 职场文书