Pakiet nazw Python można rozłożyć na wiele katalogów i plików zip lub niestandardowych importerów. Jaki jest poprawny sposób na powtórzenie wszystkich importowalnych submodułów pakietu przestrzeni nazw?Jak zaimportować wszystkie submoduły pakietu Python namespace?
Odpowiedz
Przeczytaj import confusion.
Bardzo wyraźnie rozróżnia różne sposoby importowania pakietów i modułów podrzędnych, a podczas procesu odpowiada na pytanie. Kiedy potrzebujesz pewnego submodułu z paczki, wygodniej jest napisać from io.drivers import zip
niż import io.drivers.zip
, ponieważ ten pierwszy pozwala ci odwoływać się do modułu po prostu jako zip zamiast jego pełnej nazwy.
from modname import *
, zapewnia to łatwy sposób importowania wszystkich elementów z modułu do bieżącego obszaru nazw; jednak to oświadczenie powinno być używane oszczędnie.
W szczególności nie pytam o "import *", kiedy "importuj *" z pakietu przestrzeni nazw nic się nie dzieje. Zamiast tego chcę przejrzeć wszystko, co mogę zaimportować. – joeforker
Używanie "*" importu jest okropną praktyką. Mimo że jest to ważny python, prawie zawsze jest to zły pomysł poza kilkoma wąskimi przypadkami. – Daenyth
Tak, zgadzam się, ponieważ zmniejsza to wydajność czasu, ale w sytuacji, w której nie znamy konkretnego modułu, którego chcemy użyć, importowanie całego pakietu staje się zbawcą. –
Co próbujesz osiągnąć? Co próbujesz? – Daenyth
Możesz użyć modułu pkgutil. http://stackoverflow.com/questions/3365740/how-to-import-all-submodules –
Jestem zainteresowany wykorzystaniem go do wyliczenia wtyczki. – joeforker