解决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 09 Python
Python实现的彩票机选器实例
Jun 17 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
python利用OpenCV2实现人脸检测
Apr 16 Python
浅谈numpy数组中冒号和负号的含义
Apr 18 Python
opencv python 傅里叶变换的使用
Jul 21 Python
python调用自定义函数的实例操作
Jun 26 Python
Django基础知识 web框架的本质详解
Jul 18 Python
基于pytorch 预训练的词向量用法详解
Jan 06 Python
tensorflow如何继续训练之前保存的模型实例
Jan 21 Python
python数据处理——对pandas进行数据变频或插值实例
Apr 22 Python
Python基础之教你怎么在M1系统上使用pandas
May 08 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
单位速度在实战中的运用
2020/03/04 星际争霸
php实现curl模拟ftp上传的方法
2015/07/29 PHP
PHP数学运算与数据处理实例分析
2016/04/01 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
javascript中递归函数用法注意点
2015/07/30 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
AngularJS双向数据绑定原理之$watch、$apply和$digest的应用
2018/01/30 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
浅谈webpack4 图片处理汇总
2018/09/12 Javascript
vuex 中插件的编写案例解析
2019/06/10 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
2019/07/03 Javascript
js+h5 canvas实现图片验证码
2020/10/11 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
python实现红包裂变算法
2016/02/16 Python
python梯度下降法的简单示例
2018/08/31 Python
python简单贪吃蛇开发
2019/01/28 Python
Python之列表实现栈的工作功能
2019/01/28 Python
详解Python odoo中嵌入html简单的分页功能
2019/05/29 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
python django生成迁移文件的实例
2019/08/31 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
CSS3 background-image颜色渐变的实现代码
2018/09/13 HTML / CSS
加拿大购物频道:The Shopping Channel
2016/07/21 全球购物
美国中小型企业领先的办公家具供应商:Office Designs
2016/11/26 全球购物
董存瑞观后感
2015/06/11 职场文书
三八节活动简报
2015/07/20 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript