Zunächst einmal: python setup.py install
macht in der Regel eine Kopie des Codes es installiert wird, also, wenn Sie finden, dass Sie ausführen müssen, dass vor Änderungen wirksam werden, stehen die Chancen, dass für die Entwicklung sollten Sie Ihren PYTHONPATH
oder sys.path
so werden eingestellt dass Ihre relevanten Importe direkt aus der Quellstruktur und nicht aus der Python-Site-Paketbibliothek stammen. Sie können schnell überprüfen, die Code-Datei, indem sie diese auf der Oberseite der Hauptdatei importiert, wenn Sie es ausführen:
from pybrain.rl.environments import HoldemTask # module object, not class
print(HoldemTask.__file__)
im allgemeinen Zweitens: Es ist viel besser, einen Python-Prozess neu zu starten, wenn der Code Änderungen vornehmen zu sicherstellen, dass sie in Kraft treten. Wenn Sie wirklich Änderungen ohne Neustart benötigen, lesen Sie weiter.
Das erneute Laden eines Moduls in Python wirkt sich nur auf zukünftige Importe aus. Damit ein Reload in Arbeit ist, müssen Sie das importierte Klassenobjekt nach dem Neuladen ersetzen. Zum Beispiel im Rahmen der „Hauptdatei“ Ausführen der Import Sie aufgelistet (innerhalb einer Klassenmethode oder Funktion ist in Ordnung):
# 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
Ein letzter Nachteil dabei ist, dass alle vorhandenen HoldemTask
Objekte verwenden, wird auch weiterhin die alter Code, weil sie in sich einen Verweis auf das Pre-Reload-Klassenobjekt einbetten. Die einzige Möglichkeit, ein In-Prozess-Reload zu vervollständigen, besteht darin, dass der Code spezifisch geschrieben wird, um jede Instanz von allem, was er gemacht hat, auf der Grundlage des ursprünglichen Moduls wegzuwerfen.
Danke! Ich habe gerade meinen PYTHONPATH geändert und die Dateien in einen neuen Ordner gelegt. –