Ich schreibe ein Skript und führe es mit dem Argument -i aus, um das Replikat nach dem Ende offen zu halten, damit ich Informationen über die Objekte sehen kann, die ich beim Debuggen verwende.Importieren des aktuellen Pakets
Um zu vermeiden, das Skript zu beenden und neu zu starten, habe ich herausgefunden, dass ich das Skript ändern und speichern kann, und dann [script-name] importieren und dann meine Hauptmethode mit [script-name] aufrufen. Hauptmethode]().
Jetzt möchte ich eine Ein-Zeichen-Methode (der Einfachheit halber) zu schreiben, das tut:
def x():
import [this script]
[this script].[main-method]()
aber auch in der Lage sein, die Skriptdateinamen zu ändern und die einfach Nachladen Funktionalität beibehalten, ohne ändern zu müssen der Code.
Ich habe versucht, mit Importlib (siehe unten) ohne Erfolg.
def y():
import importlib
this = importlib.import_module("".join(sys.argv[0].split(".py"))) # sys.argv[0] gives [module-name].py and the rest of the code inside the parentheses removes the ".py"
this.[main-method]()
Das gibt mir "ImportError: Interne Modul __main__ kann nicht neu initialisiert werden". Könnte das Hauptmodul die einzige Ausnahme sein? – PistoletPierre
Ja. Versuchen Sie dies nicht über die Befehlszeile. \ _ \ _ main \ _ \ _ ist das "Modul", das alle von Ihnen eingegebenen Daten enthält. Es macht Sinn, dass Sie das nicht neu laden können. –
Fun Tatsache, Sie können Backslashes vor jedem Unterstrich verwenden, um seine besondere Bedeutung zu entfernen. Versuchen Sie Folgendes: \\ _ \\ _ main \\ _ \\ _ –