解决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使用multiprocessing创建进程的方法
Jun 04 Python
Python中pygame安装方法图文详解
Nov 11 Python
Python处理JSON数据并生成条形图
Aug 05 Python
更改Ubuntu默认python版本的两种方法python-> Anaconda
Dec 18 Python
通过Python 获取Android设备信息的轻量级框架
Dec 18 Python
Python对象与引用的介绍
Jan 24 Python
Python中*args和**kwargs的区别详解
Sep 17 Python
Django中使用haystack+whoosh实现搜索功能
Oct 08 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
Oct 22 Python
Django项目在pycharm新建的步骤方法
Mar 02 Python
Python基础数据类型tuple元组的概念与用法
Aug 02 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获取网页标题和内容函数(不包含html标签)
2014/02/03 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
jQuery DOM操作小结与实例
2010/01/07 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
jquery选择器中的空格与大于号>、加号+与波浪号~的区别介绍
2016/06/24 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
快速解决处理后台返回json数据格式的问题
2018/08/07 Javascript
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
node爬取新型冠状病毒的疫情实时动态
2020/02/06 Javascript
浅谈使用nodejs搭建web服务器的过程
2020/07/20 NodeJs
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
Python for i in range ()用法详解
2020/09/18 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
中学生班主任评语
2014/01/30 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
生物技术专业求职信
2014/06/10 职场文书
最新离婚协议书范本
2014/08/19 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
2015年扫黄打非工作总结
2015/05/13 职场文书
高二语文教学反思
2016/02/16 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang
JVM的类加载器和双亲委派模式你了解吗
2022/03/13 Java/Android