Во-первых: python setup.py install
обычно делает копию кода его установка, поэтому, если вы обнаружили, что вам нужно запустить что, прежде чем изменения вступят в силу, есть вероятность, что для развития вы должны регулировать ваш PYTHONPATH
или sys.path
так что ваш соответствующий импорт поступает непосредственно из исходного дерева, а не из библиотеки пакетов сайтов Python. Вы можете быстро проверить, какой файл код импортирует, помещая это в верхней части основного файла при запуске:
from pybrain.rl.environments import HoldemTask # module object, not class
print(HoldemTask.__file__)
Во-вторых, в целом гораздо лучше, чтобы перезапустить процесс Python при внесении изменений кода в чтобы они вступили в силу. Если вам действительно нужно, чтобы изменения отображались без перезагрузки, читайте дальше.
Перезагрузка модуля на Python влияет только на будущий импорт. Для перезагрузки для работы в процессе вам необходимо заменить импортированный объект класса после перезагрузки. Например, в контексте «главного файла» исполняющей импорта вы перечислили (внутри метода класса или функции отлично):
# we need a module object to reload(), not the class inside it
from import pybrain.rl.environments import HoldemTask as HoldemTask_module
reload(HoldemTask_module)
# we then need to replace the old class object with the reloaded one
# in the main file's module-wide (aka "global") namespace
global HoldemTask
HoldemTask = HoldemTask_module.HoldemTask
Один последний нюанс в том, что любые существующие HoldemTask
объекты будут продолжать использовать старый код, потому что они встроят в себя ссылку на объект класса до перезагрузки. Единственный способ для завершения перезагрузки в процессе - это, если код специально написан, чтобы выбросить каждый экземпляр всего, что он сделал на основе исходного модуля.
Спасибо! Я просто изменил свой PYTHONPATH и поместил файлы в новую папку. –