Ich habe ein vorhandenes Python-Modul mit einem Bindestrich im Namen, foo-bar.py
Das Ändern des Modulnamens würde ich lieber vermeiden, da das Modul gemeinsam genutzt wird, und ich müsste alle Stellen aufspüren, an denen es verwendet wird, damit mein Sonderfall funktioniert.
Gibt es eine Möglichkeit, ein Modul zu laden, dessen Name das normalerweise verbotene '-' enthält?
(Ich verstehe, dass dies keine bewährte Methode ist. In dieser Situation würde ich es jedoch vorziehen, keine viel größeren Anwendungen neu zu entwerfen und zu testen. Außerdem glaube ich nicht, dass meine Unternehmensleiter es gutheißen würden, wenn ich mir die Zeit für die Implementierung nehme eine solche Änderung.)
foo-bar
s durchfoobar
oder was auch immer ersetzen ? Wie schwer ist dasAntworten:
Sie können das mit tun
__import__()
. Beispielsweise:Aber Sie sollten das Modul stattdessen wirklich umbenennen. Auf diese Weise können Sie Verwirrung vermeiden, wenn sich der Dateiname des Moduls von der im Programm verwendeten Kennung unterscheidet.
quelle
Ich weiß, dass diese Frage bereits zur Zufriedenheit des Fragestellers beantwortet wurde, aber hier ist eine andere Antwort, von der ich glaube, dass sie einen gewissen Wert hat
__import__()
.Laut den Dokumenten:
Python 2.7
+ nurquelle
Versuchen Sie, einen Unterstrich anstelle eines Bindestrichs zu verwenden.
importiere pymysql_utils
funktionierte für mich, obwohl import pymysql-utils der Name des von pip verwendeten Moduls war
quelle