
Huffman überspringen
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 geteilt wird, und ich müsste alle Orte aufspüren, an denen es verwendet wird, damit mein Spezialfall 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. Aber für diese Situation würde ich es 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, dass ich mir die Zeit für die Implementierung nehme eine solche Änderung.)
Das kannst du machen mit __import__()
. Beispielsweise:
foobar = __import__("foo-bar")
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.
Ich weiß, dass diese Frage bereits zur Zufriedenheit des Fragestellers beantwortet wurde, aber hier ist eine andere Antwort, von der ich glaube, dass sie gegenüber der Verwendung einige Vorteile hat __import__()
.
import importlib
mod = importlib.import_module("path.to.my-module")
# mod.yourmethod()
Laut den Unterlagen:
"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
.
1987800cookie-checkPython-Modul mit einem Bindestrich (-) im Namenyes
Diese Antwort insbesondere: stackoverflow.com/questions/761519/…
– BenH
28. September ’11 um 13:06
Beantwortet das deine Frage? Ist es in Ordnung, Bindestriche in Python-Dateien zu verwenden, wenn Sie versuchen, sie zu importieren?
– Georgi
12. August ’20 um 14:36