from MyPak import MyMod
MyModule总是以Class形式导入,因此我无法重新加载它(reload()仅适用于模块)。再次执行
from MyPak import MyMod
似乎不会更新类定义。有人能建议一种在python shell中更新类的方式吗?
ps. 不需要重新启动python解释器。
pps. 如果你手头有代码并想测试一下:我实际上正在谈论BioPython,并且我正在处理Bio.PDB.PDBParser。我有一个ipython shell(v0.10)并编辑了PDBParser.py。只是没有办法在ipython中重新加载它。
所以,这是我做过的事情:
# start ipython v0.10
import Bio
from Bio.PDB import PDBParser
p = PDBParser()
s = p.get_structure()
# then I make changes,e.g. simply print some text, in PDBParser.py
del Bio
del PDBParser
del s
import Bio # or reload(Bio) without deleting all the objects
from Bio.PDB import PDBParser
p = PDBParser()
s = p.get_structure() # expected output after change not seen :(
我无法看到打印出来的文本。一些更改并没有被应用。
CTRL+C
,$ python
,from MyPak import MyMod
;) - Jacobimport MyPak.MyMod
然后reload(MyPak.MyMod)
会起作用吗? - agfimport MyPak.MyMod
仍将 MyPak.MyMod 导入为一个 类。 - HongboZhudel MyMod
,然后再使用from MyPak import MyMod
呢?你的包布局有点不寻常(MyPak/init.py 导入了所有内容),但这可能有助于清除命名空间并允许重新导入。 - Kirk Strauser