我正在使用Python + IPython进行数据科学。我做了一个包含所有我写的模块,在程序包中的文件夹,像Python重载和IPython自动重载也不起作用
python_workfolder
|
|---a
| |---__init__.py
| |---a1.py
| |---a2.py
|
|---b
| |---__init__.py
| |---b1.py
| |---b2.py
|
|---c
| |---__init__.py
| |---c1.py
| |---c2.py
|
|
|---script1.py
|---script2.py
在每次会议开始时我问到的IPython自动重载模块:
%load_ext autoreload
%autoreload 2
现在...让我们说a1.py包含一个类,A1
,我想从其中一个脚本调用。在包a
的__init__.p
我导入模块
import a1
然后在脚本中,我导入类,我需要
from a.a1 import A1
如果在A1类的一些错误,我修改它,也没有让Python重新加载它而不重新启动内核的方式。
我试过del a1
,del sys.modules['a1']
,del sys.modules['a']
。每次它使用旧版本的类,直到我没有重新启动内核...任何人都可以给我一些建议?
您可能要指出,“重装不起作用”,然后再重新阅读FineManual?这些注意事项和限制都有明确的解释:https://docs.python.org/3/library/imp.html#imp.reload –
我发现如果我在IPython shell中键入命令,'reload'可以工作,但它确实不是如果我通过Pyzo(我正在使用的IDE)运行它们。这是问题... – Marco