Если я импортирую модуль, определяющий класс с тем же именем, принадлежащим пакету, он импортируется как класс, а не как модуль из-за __init__.py родительского пакета.Смотрите различные результаты импорта в разных каталогах для подробностей.В оболочке Python или ipython, если я делаю
from MyPak import MyMod
, MyModule всегда импортируется как Class, поэтому я не могу перезагрузить его (reload () работает только для модулей).Повторный запуск
from MyPak import MyMod
, похоже, не обновляет определение класса.Кто-нибудь может предложить способ обновления класса в оболочке Python?
пс.без перезапуска интерпретатора Python.
pps .На всякий случай, если у вас есть код под рукой и вы хотите его протестировать: я на самом деле говорю о BioPython и работаю над Bio.PDB.PDBParser.У меня есть оболочка ipython (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 :(
Я не мог видеть напечатанный текст.Изменения не были применены как-то.