解决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查询Mysql时返回字典结构的代码
Jun 18 Python
Python实现八皇后问题示例代码
Dec 09 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
pandas ix &iloc &loc的区别
Jan 10 Python
详解python中@的用法
Mar 27 Python
python输出决策树图形的例子
Aug 09 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
Oct 10 Python
python实现批处理文件
Jul 28 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
Python如何把不同类型数据的json序列化
Apr 30 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 07 Python
总结几个非常实用的Python库
Jun 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
PHP下打开URL地址的几种方法小结
2010/05/16 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
Vue.js实现表格动态增加删除的方法(附源码下载)
2017/01/20 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
2017/02/08 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
vue项目前端知识点整理【收藏】
2019/05/13 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
使用JS实现动态时钟
2020/03/12 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
Python自动重试HTTP连接装饰器
2015/04/28 Python
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
python版简单工厂模式
2017/10/16 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
Python面向对象之Web静态服务器
2019/09/03 Python
python超时重新请求解决方案
2019/10/21 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
请说出以下代码输出什么
2013/08/30 面试题
高中生学习生活的自我评价
2013/10/09 职场文书
免职证明样本
2014/10/23 职场文书
护理医院见习报告
2014/11/03 职场文书
2016高考寄语或鼓励的话语
2015/12/04 职场文书
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js
Web应用开发TypeScript使用详解
2022/05/25 Javascript