Python-Modul mit einem Bindestrich (-) im Namen

Lesezeit: 2 Minuten

Python Modul mit einem Bindestrich im Namen
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.)

  • 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

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.

  • Danke. Ich verstehe, dass Konventionen eingehalten werden sollten, wo immer dies praktikabel ist. Ich werde dieses spezielle Problem während einer Überprüfung des Abteilungscodes ansprechen.

    – Huffman überspringen

    28. September ’11 um 13:23

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

  • Ich habe danach gesucht, wie das geht, und Ihre Antwort trifft besser auf meine Situation zu als die ältere Antwort. Es ist immer gut, wenn Sie eine eindeutige Antwort auf die bereits vorhandene sehen, um sie als neue Antwort hinzuzufügen, damit Personen in einer Position wie mir alle relevanten Informationen an einem Ort finden können.

    – Davy M

    25. August ’17 um 23:47

.

198780cookie-checkPython-Modul mit einem Bindestrich (-) im Namen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy