做课题和数据挖掘竞赛用python比较多,比较常用的是在服务器终端输入jupyter notebook --ip 0.0.0.0,打开jupyter notebook的一个后台,并在本地windows电脑浏览器进入该服务端写python代码。
将.ipynb和.py结合,可以使得jupyter notebook的工程文件目录更有条理,一些函数可以定义在.py文件中,需要调用这些文件时,就导入到.ipybn中执行。
那在jupyter notebook中调用同,怎么在.ipynb.py中调用.py文件呢?
举个栗子:
在同一个目录下,有word2vec.ipynb和utils.py两个文件:
执行下列代码,则可以在word2vec.ipynb中调用utils.py
1. 首先执行utils.py,检查utils.py是否能正常运行。如果utils.py报错,则应该重新修改utils.py;若没报错,则执行第二步:
%run utils.py
2. 从.ipynb文件中加载.py(utils.py)文件.
from imp import reload
import utils
reload(utils)
注:
1. Jupyter Notebook中运行.py文件
问题描述:文件夹下有xx.py格式的python文件,想要在Jupyter Notebook中运行该文件。
解决办法:
(主要)方法1.利用
%run xx.py
直接运行得出结果。
方法2:利用
%load xx.py
载入代码再点击Run运行,这种方法的好处是可以方便修改代码。
说明:
Jupyter Notebook中以%开头的代码为魔法函数
其中:
%run 调用外部python脚本
%load 加载本地文件
2. Python中使用import和reload()出现错误的原因
1、Python2中可以和Python3中关于reload()用法的区别。
Python2 中可以直接使用reload(module)重载模块。
Pyhton3中需要使用如下两种方式:
方式(1)
>>> from imp
>>> imp.reload(module)
方式(2)
>>> from imp import reload
>>> reload(module)
2、Python中使用import和reload()出现错误的原因
在Python中,以py为扩展名保存的文件就可以认为是一个模块,模块包含了 Python 对象定义和Python语句。
假设recommendations.py 放在C:\Python34\PCI_Code\chapter2\目录下,其中包含函数critics
如果在import函数的时候出现如下错误:
>>> from recommendation import critics
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
from recommendation import critics
ImportError: No module named 'recommendation'
请把目录C:\Python34\PCI_Code\chapter2\加到系统路径中,
>>> import sys
>>> sys.path.append("C:\Python34\PCI_Code\chapter2")
>>> from recommendations import critics
>>>
或者切换到文件所在的目录中,
C:\Python34\PCI_Code\chapter2>python
>>> from recommendations import *
>>>
使用reload()时出现如下错误
>>> from imp import reload
>>> reload(recommendations)
Traceback (most recent call last):
File "<pyshell#86>", line 1, in <module>
reload(recommendations)
NameError: name 'recommendations' is not defined
原因是因为在reload某个模块的时候,需要先import来加载需要的模块,这时候再去reload就不会有问题,具体看下面代码:
>>> from imp import reload
>>> import recommendations
>>> reload(recommendations)
<module 'recommendations' from 'C:\\Python34\\PCI_Code\\chapter2\\recommendations.py'>
>>>
转自:
python中reload(module)的用法,以及错误提示