2012-05-22 11 views
7

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?

+2

Co próbujesz osiągnąć? Co próbujesz? – Daenyth

+1

Możesz użyć modułu pkgutil. http://stackoverflow.com/questions/3365740/how-to-import-all-submodules –

+0

Jestem zainteresowany wykorzystaniem go do wyliczenia wtyczki. – joeforker

Odpowiedz

1

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.

+0

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

+0

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

+0

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ą. –

Powiązane problemy