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