Python-Modul mit einem Bindestrich oder Bindestrich (-) in seinem Namen

Ich habe ein bestehendes Python-Modul mit einem Bindestrich in seinem Namen, foo-bar.py

Das Ändern des Modulnamens ist etwas, das ich lieber vermeiden möchte, da das Modul geteilt wird, und ich müsste alle Orte, die es verwendet wird, verjagen, damit mein Spezialfall funktioniert.

Gibt es eine Möglichkeit, ein Modul zu laden, dessen Name das typisch verbotene '-' enthält?

(Ich verstehe, dass dies nicht eine bewährte Praxis ist, aber für diese Situation würde ich es vorziehen, nicht zu skizzieren und zu testen, eine viel größere Menge von Anwendungen.Ich denke auch nicht, dass meine Corporate Master würde genehmigen, dass ich die Zeit zu implementieren Eine solche änderung.)

2 Solutions collect form web for “Python-Modul mit einem Bindestrich oder Bindestrich (-) in seinem Namen”

Sie können das mit __import__() tun. Beispielsweise:

 foobar = __import__("foo-bar") 

Aber du solltest das Modul stattdessen umbenennen. Auf diese Weise können Sie Verwirrung vermeiden, wo sich der Dateiname des Moduls von dem im Programm verwendeten Bezeichner unterscheidet.

Ich weiß, diese Frage wurde bereits zur Befriedigung des Asks beantwortet, aber hier ist eine andere Antwort, die ich glaube, hat etwas Verdienst oben mit __import__() .

 import importlib mod = importlib.import_module("path.to.my-module") # mod.yourmethod() 

Nach den docs:

 "This provides an implementation of import which is portable to any Python interpreter. This also provides an implementation which is easier to comprehend than one implemented in a programming language other than Python." 

Python 2.7 + nur

  • Python-Modul und __all__
  • Python Import Typ Erkennung
  • Mit __init__.py
  • Homebrew + Python auf mac os x 10.8: Fatal Python error: PyThreadState_Get: kein aktueller Thread importiert mapnik
  • Installiere gmpy auf Mac OS X Mountain Lion
  • __getattr__ auf einem Modul
  • Abfangen von Modulaufrufen?
  • Vollständig qualifizierter Name eines Python-Moduls
  • Aufrufbare Module
  • Was passiert, wenn ich das Modul zweimal in Python importiere
  • __package__ ist beim Import eines Python-Moduls keine
  • Python ist die beste Programmiersprache der Welt.