8 Stimmen

Python - Wie kann man den Alias eines Moduls verwenden, um seine Untermodule zu importieren?

Ich habe einen langen Modulnamen und möchte vermeiden, dass ich ihn in meinem Dokument mehrmals eingeben muss. Ich kann einfach tun import long_ass_module_name as lamn und es so zu nennen. Dieses Modul hat jedoch viele Untermodule, die ich ebenfalls importieren und verwenden möchte.

In diesem Fall werde ich nicht in der Lage sein zu schreiben import lamn.sub_module_1 weil python import diesen Alias, den ich für meinen long_ass_module_name gemacht habe, nicht erkennt. Wie kann ich das erreichen?

Sollte ich einfach automatisch alle Untermodule in das Hauptmodul importieren? __init__.py ?

11voto

Dietrich Epp Punkte 193178

Ein aliasiertes Objekt ändert sich noch, wenn Sie Submodule importieren,

import my_long_module_name as mlmn
import my_long_module_name.submodule

mlmn.submodule.function()

En import Anweisung wird immer der vollständige Name des Moduls verwendet. Das Modul ist nur ein Objekt, und der Import eines Submoduls fügt diesem Objekt ein Attribut hinzu.

1voto

gauteh Punkte 15345

Diese (in hohem Maße nicht empfehlenswerte) Methode, alle Mitglieder eines Objekts in den aktuellen Namespace zu importieren, funktioniert durch Nachschlagen der vars() Wörterbuch:

import my_bad_ass_long_module.bafd as b

# get __dict__ of current namespace
myn = vars() 
for k,v in vars(b).items():
  # populate this namespace with the all the members of the b namespace (overwriting!)
  myn[k] = v

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X