2012-05-22 28 views
7

Python名前空間パッケージは、多くのディレクトリ、zipファイル、またはカスタムインポータに分散させることができます。名前空間パッケージのすべてのインポート可能なサブモジュールを反復する正しい方法は何ですか?Python名前空間パッケージのすべてのサブモジュールをインポートするにはどうすればよいですか?

+2

あなたは何を達成しようとしていますか?何を試しましたか? – Daenyth

+1

pkgutilモジュールを使用できます。 http://stackoverflow.com/questions/3365740/how-to-import-all-submodules –

+0

私はそれをプラグインの列挙に使用することに興味があります。 – joeforker

答えて

1

import confusionをお読みください。

これは、パッケージとそのサブモジュールをインポートすることができるさまざまな方法を非常にはっきりと区別しており、その過程であなたの質問に答えてくれます。パッケージから特定のサブモジュールが必要なときは、from io.drivers import zipimport io.drivers.zipよりも書く方がはるかに便利です。なぜなら前者ではモジュールをフルネームではなく単にzipとして参照できるからです。

from modname import *これにより、モジュールのすべてのアイテムを現在の名前空間に簡単にインポートできます。ただし、この記述は控えめに使用する必要があります。

+0

私は特に "import *"について質問していません。名前空間パッケージから "import *"を実行しても何も起こりません。代わりに、私がインポートできるすべてを繰り返していきたいと思います。 – joeforker

+0

'*' importsを使うのはひどい習慣です。これは有効なPythonですが、ほとんどの場合、いくつかの狭いケースの外には悪い考えです。 – Daenyth

+0

はい、それは時間効率を低下させるので、私は同意しますが、使用する特定のモジュールを知らない状況では、パッケージ全体をインポートすることは救世主になります。 –

関連する問題