Wie ändere ich einen Python-Modulnamen?

Ist es nur möglich, wenn ich die Datei umbenähte? Oder gibt es eine __module__ Variable in die Datei zu definieren, was ist ihr Name?

7 Solutions collect form web for “Wie ändere ich einen Python-Modulnamen?”

Ja, du solltest die Datei umbenennen. Am besten wäre es, nachdem du das getan hast, um die Dateien oldname.pyc und oldname.pyo kompilieren (falls vorhanden) aus deinem System zu entfernen, sonst wird das Modul auch unter dem alten Namen importiert.

Wenn du die Datei 'oldname.py' wirklich mit der Anweisung 'import newname' importieren möchtest, gibt es einen Trick, der es möglich macht: das Modul irgendwo mit dem alten Namen zu sys.modules mit dem neuen Namen in sys.modules zu injizieren . Nachfolgende Importanweisungen finden sie auch unter dem neuen Namen. Codebeispiel:

 # this is in file 'oldname.py' ...module code... 

Verwendung:

 # inject the 'oldname' module with a new name import oldname import sys sys.modules['newname'] = oldname 

Jetzt können Sie überall Ihr Modul mit import newname .

Sie können den Namen für ein Modul beim Importieren ändern, indem Sie als:

 import foo as bar print bar.baz 

Wenn Sie import module_name der Python-Interpreter nach einer Datei module_name .extension in PYTHONPATH. So gibt es keinen chaging diesen Namen ohne Änderung der Name der Datei. Aber natürlich können Sie:

 import module_name as new_module_name 

oder auch

 import module_name.submodule.subsubmodule as short_name 

Nützlich zB Zum Schreiben von DB-Code.

 import sqlite3 as sql sql.whatever.. 

Und dann schalten wir zB sqlite3 zu pysqlite Sie ändern einfach die Importlinie

Jede Klasse hat eine __module__ Eigenschaft, obwohl ich glaube, dass das Ändern wird der Namespace der Klasse nicht ändern.

Wenn es möglich ist, würde es wahrscheinlich mit setattr, um die Methoden oder Klasse in das gewünschte Modul einfügen, obwohl Sie das Risiko laufen, Ihren Code sehr verwirrend für Ihre zukünftigen Kollegen.

Ihre beste Wette ist, die Datei umzubenennen.

Wo __module__ du diese __module__ Variable haben, also dein originales Skript weiß was zu importieren? Module werden von Dateinamen erkannt und in Pfaden gesucht, die in der Variable sys.path definiert sind.

Also musst du die Datei umbenennen und dann den oldname.pyc entfernen, nur um sicherzustellen, dass alles richtig funktioniert.

Ich hatte ein Problem wie dieses mit bsddb. Ich war gezwungen, das Modul bsddb3 zu installieren, aber Hunderte von Skripten importierten bsddb. Anstatt den Import in allen zu ändern, habe ich das bsddb3-Ei extrahiert und einen weichen Link im Site-Pakete-Verzeichnis erstellt, so dass sowohl "bsddb" als auch "bsddb3" im selben zu python waren.

  • Wie bekomme ich eine Liste von lokal installierten Python-Modulen?
  • Homebrew + Python auf mac os x 10.8: Fatal Python error: PyThreadState_Get: kein aktueller Thread importiert mapnik
  • Python-Modulpfad abrufen
  • Colorama AssertionError in Python 3.2
  • In Python kann ich das Haupt- () eines importierten Moduls anrufen?
  • Umgang mit Pylab Import Fehler undefined Symbol
  • Ist es möglich, Python nativ zu kompilieren (jenseits von pytes Byte-Code)?
  • Python-Modul-Import - relative Pfade Problem
  • Was passiert, wenn ich das Modul zweimal in Python importiere
  • Wie kann ich feststellen, ob ein Python-Skript als Modul importiert oder als Skript ausgeführt wird?
  • Einschließlich eines kompilierten Moduls im Modul, das mit f2py verpackt ist (Minimum work example)?
  • Python ist die beste Programmiersprache der Welt.