解决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 代码效率的方法
Jul 03 Python
一些常用的Python爬虫技巧汇总
Sep 28 Python
python3 unicode列表转换为中文的实例
Oct 26 Python
详解python校验SQL脚本命名规则
Mar 22 Python
一步步教你用python的scrapy编写一个爬虫
Apr 17 Python
Python正则表达式实现简易计算器功能示例
May 07 Python
python绘制地震散点图
Jun 18 Python
django中使用Celery 布式任务队列过程详解
Jul 29 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
Apr 13 Python
python not运算符的实例用法
Jun 30 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中foreach循环中使用引用要注意的地方
2011/01/02 PHP
php Ubb代码编辑器函数代码
2012/07/05 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
简单的JS多重继承示例
2008/03/13 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
Jquery实现仿京东商城省市联动菜单
2015/11/19 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
JavaScript常用字符串与数组扩展函数小结
2016/04/24 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
使用pkg打包Node.js应用的方法步骤
2018/10/19 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
[03:46]显微镜下的DOTA2第七期——满血与残血
2014/06/20 DOTA
Django中自定义模型管理器(Manager)及方法
2019/09/23 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
python中有函数重载吗
2020/05/28 Python
Python远程linux执行命令实现
2020/11/11 Python
介绍一下UNIX启动过程
2013/11/14 面试题
医护人员英文求职信范文
2013/11/26 职场文书
中班中秋节活动反思
2014/02/18 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
公司合作协议范文
2014/10/01 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
锅炉工岗位职责
2015/02/13 职场文书
公司新员工欢迎词
2015/09/30 职场文书
2016先进集体事迹材料范文
2016/02/25 职场文书
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
Java使用JMeter进行高并发测试
2021/11/23 Java/Android