解决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 paramiko实现ssh远程访问的方法
Dec 03 Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 Python
Python爬虫代理IP池实现方法
Jan 05 Python
Python 文件处理注意事项总结
Apr 10 Python
python实现发送邮件功能代码
Dec 14 Python
python基于物品协同过滤算法实现代码
May 31 Python
对Python 获取类的成员变量及临时变量的方法详解
Jan 22 Python
python+selenium实现自动化百度搜索关键词
Jun 03 Python
python将print输出的信息保留到日志文件中
Sep 27 Python
pytorch之添加BN的实现
Jan 06 Python
python中Django文件上传方法详解
Aug 05 Python
如何获取numpy array前N个最大值
May 14 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 高手之路(三)
2006/10/09 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
php判断电脑访问、手机访问的例子
2014/05/10 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
实现变速回到顶部的JavaScript代码
2011/05/09 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
2012/08/14 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
2015/12/29 Javascript
在Docker快速部署Node.js应用的详细步骤
2016/09/02 Javascript
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
[01:00]DOTA2 store: Collection of Artisan's Wonders
2015/08/12 DOTA
python获取mp3文件信息的方法
2015/06/15 Python
python计算一个序列的平均值的方法
2015/07/11 Python
django 发送手机验证码的示例代码
2018/04/25 Python
Python实现的多进程和多线程功能示例
2018/05/29 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
Python3中urlencode和urldecode的用法详解
2019/07/23 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
俄罗斯隐形眼镜和眼镜在线商店:Cronos
2020/06/02 全球购物
EJB面试题
2015/07/28 面试题
程序员求职信
2014/04/16 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
同学会演讲稿
2019/04/02 职场文书
MySQL中存储时间的最佳实践指南
2021/07/01 MySQL