重新导入模块:重新加载不起作用

时间:2018-01-04 16:33:22

标签: python python-2.7 python-import reload

我是Matlab用户,也是Python新手。我想从外部文件中调用最简单的python函数。我编辑该函数,但我的Canopy解释器(IPython)无法识别新版本并继续调用旧文件!

假设此函数保存为mymodule.py:

def oper(x):
  print(x)

主要文件是:

del mymodule.pyc 
import mymodule
import imp
imp.reload(mymodule)

oper(5)

运行一次。更改打印(x)以打印(x + 1)。它一直执行print(x)。 如果我在主文件中定义函数oper(x),或者如果我关闭Canopy并重新打开它,或者如果我通过GUI运行>重置内核重置Canopy内核,那就可以了(但我无法编程)。

我还尝试了重载(mymodule)和%reset,但这并没有解决问题。理想情况下,我希望主文件中的Python命令可以完全重置工作区(内核,名称等)。我使用的是Canopy 1.7.4.3348,其中包括Python 2.7.11和IPython 4.0.0.9。

1 个答案:

答案 0 :(得分:-1)

您需要像这样导入并使用

from mymodule import oper
oper(5)

import mymodule
mymodule.oper(5)

此外,在mymodule的同一目录中,在那里创建一个空的__init__.py文件。这将让python知道它是一个模块。

相关问题