如果导入的模块定义了属于同一个包的同名类,则由于父包的__init__.py,它将作为类而不是模块导入。有关详细信息,请在不同目录中查看不同的导入结果。在Python Shell或ipython Shell中,如果我这样做
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
)