我正在使用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