解决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选择排序算法的实现代码
Nov 21 Python
Python读写Redis数据库操作示例
Mar 18 Python
Python跳出循环语句continue与break的区别
Aug 25 Python
Python可跨平台实现获取按键的方法
Mar 05 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
Sep 11 Python
Python之Scrapy爬虫框架安装及简单使用详解
Dec 22 Python
解决python os.mkdir创建目录失败的问题
Oct 16 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
解决python3运行selenium下HTMLTestRunner报错的问题
Dec 27 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
python本地文件服务器实例教程
May 02 Python
python 闭包函数详细介绍
Apr 19 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
如何过滤高亮显示非法字符
2006/10/09 PHP
php 表单数据的获取代码
2009/03/10 PHP
php中实现获取随机数组列表的自定义函数
2015/04/02 PHP
PHP 实现手机端APP支付宝支付功能
2018/06/07 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
基于Jquery的仿照flash放大图片效果代码
2011/03/16 Javascript
js实现简单计算器
2015/11/22 Javascript
js字符串与Unicode编码互相转换
2017/05/17 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
详解JS函数防抖
2020/06/05 Javascript
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
python如何求100以内的素数
2020/05/27 Python
TensorFlow中如何确定张量的形状实例
2020/06/23 Python
python不同系统中打开方法
2020/06/23 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
什么是Remote Module
2016/06/10 面试题
明信片寄语大全
2014/04/08 职场文书
我的祖国演讲稿
2014/05/04 职场文书
2014组织生活会方案
2014/05/19 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
卖房授权委托书样本
2014/10/05 职场文书
学校食堂标语
2014/10/06 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
就业意向协议书
2015/01/29 职场文书
委托函范文
2015/01/29 职场文书
2015年售票员工作总结
2015/04/29 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
详解SQL的窗口函数
2022/04/21 Oracle