2011-02-04 13 views
2

私は、次のファイルがあります。python - パッケージからサブパッケージをインポートできませんか?

pack/__init__.py 
pack/subpack/__init.__py 
pack/subpack/mod2.py 

を、次のコードは、最後の行に失敗します。

from pack import * #should import everything 
print subpack  #NameError: name 'subpack' is not defined 

私はサブパッケージをインポートすることを期待する - なぜ違いがあり、そしてどのようにすることができます私はそれを克服する? 重要:「克服する」とは、いつもpack.subpackを書かなくてもsubpackを参照できることを意味します。

答えて

8

あなたはpack/__init__.py

__all__ = ["mod1", "subpack"] 

を追加する必要があります。この行がなければmod1もインポートされないので、何が起こっているのだろうかと思います。 relevant section in Guido's tutorialも参照してください。あなたは「サブパック」はそこに表示されたことを確認し、__all__を宣言した場合はpack/__init__.py

で「インポートサブパック」を追加

+0

「サブパックのインポート*から」という質問は何も言いません。 'from pack import *'を実行し、 'pack.subpack'ではなく' subpack'を参照したいと言うだけです( 'from pack import subpack'で簡単に実行できます)。 – Velociraptors

+0

私はあなたの提案を試みましたが、後で私は 'from packpack import mod2'をやってみたいと思います。 あなたはmod1について正しいです、質問を編集して削除しました。ごめんなさい。 – olamundo

+0

@Velociraptors - 私は明示的に 'from pack import subpack'を書いてはいけません - 私はたくさんのモジュールとパッケージを' pack'の中に持っていて、C++の 'using'ステートメントに似たことをしようとしています。 – olamundo

2

してみてください。

関連する問題