解决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 相关文章推荐
20个常用Python运维库和模块
Feb 12 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
基于python进行桶排序与基数排序的总结
May 29 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
python函数声明和调用定义及原理详解
Dec 02 Python
用Python绘制漫步图实例讲解
Feb 26 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
Mar 13 Python
pytorch读取图像数据转成opencv格式实例
Jun 02 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
python解包概念及实例
Feb 17 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
239军机修复记
2021/03/02 无线电
PHP实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
XHProf报告字段含义的解析
2016/05/17 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
爱恋千雪-US-AscII加密解密工具(网页加密)下载
2007/06/06 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
jQuery实现的原图对比窗帘效果
2014/06/15 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
简述JS控制台的使用
2018/07/15 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
koa router 多文件引入的方法示例
2019/05/22 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
VUE 实现element upload上传图片到阿里云
2020/08/12 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
[37:21]完美世界DOTA2联赛PWL S2 Inki vs Magma 第二场 11.22
2020/11/24 DOTA
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
python基于windows平台锁定键盘输入的方法
2015/03/05 Python
用python实现的线程池实例代码
2018/01/06 Python
python实现电脑自动关机
2018/06/20 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
python多进程并发demo实例解析
2019/12/13 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
工程负责人任命书
2014/06/06 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
语文复习计划
2015/01/19 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
Navicat连接MySQL错误描述分析
2021/06/02 MySQL