如果我导入一个定义了属于同一个包的同名类的模块,它将被导入为一个类,而不是一个模块,因为父包的__init__.py。详情请参见
different import results at different directories。在Python shell或ipython shell中,如果我这样做
从MyPak导入MyMod
MyModule总是作为类导入,因此我无法重新加载它(reload()仅适用于模块)。跑
从MyPak导入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 :(
我看不到打印的文本。这些更改没有以某种方式应用。