我使用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自动朗读模块:
^{pr2}$现在。。。假设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']
。每次它使用旧版本的类,直到我不重新启动内核。。。有人能给我一些建议吗?在
这很有趣。我的问题似乎不是IPython的问题,而是Pyzo(我使用的IDE)的问题。我在a1中添加了一个TestClass:
这是我在IPython shell中运行命令得到的输出:
^{pr2}$现在我修改
disp
以打印'BBB'所以它实际上被重新装载了。。。另外,如果我在开始时跳过autoreload命令,它会再次打印“AAA”。所以它起作用了。在
相反,如果我通过Pyzo运行命令(创建一个脚本,选择行并按F9或右键单击编辑器选项卡并选择“运行文件”),它不会被重新加载!在
我再次修改
disp
以打印'BBB'相关问题 更多 >
编程相关推荐