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