解决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批量创建迅雷任务及创建多个文件
Feb 13 Python
Python随机生成带特殊字符的密码
Mar 02 Python
python实现获取Ip归属地等信息
Aug 27 Python
python抓取网页中链接的静态图片
Jan 29 Python
pycharm修改界面主题颜色的方法
Jan 17 Python
python实现AES和RSA加解密的方法
Mar 28 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
简单了解django文件下载方式
Feb 10 Python
python批量修改xml属性的实现方式
Mar 05 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
Jul 09 Python
在 Python 中使用 MQTT的方法
Aug 18 Python
Python 实现定积分与二重定积分的操作
May 26 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
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
javascript中数组的冒泡排序使用示例
2013/12/18 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
JavaScript数据结构与算法之栈详解
2015/03/12 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
Jquery解析json字符串及json数组的方法
2015/05/29 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
js HTML5多媒体影音播放
2016/10/17 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
javascript trie前缀树的示例
2018/01/29 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
在Python编程过程中用单元测试法调试代码的介绍
2015/04/02 Python
Python多进程分块读取超大文件的方法
2016/04/13 Python
python基础教程项目二之画幅好画
2018/04/02 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
由面试题加深对Django的认识理解
2019/07/19 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
Python __slots__的使用方法
2020/11/15 Python
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
戴森英国官网:Dyson英国
2019/05/07 全球购物
工作中的自我评价如何写好
2013/10/28 职场文书
综合实践活动方案
2014/02/14 职场文书
报效祖国演讲稿
2014/09/15 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
2014年基层党建工作总结
2014/11/11 职场文书
教你用Java Swing实现自助取款机系统
2021/06/11 Java/Android
Nginx动静分离配置实现与说明
2022/04/07 Servers