1

2つの異なる場所にモジュールがあります

例えば

場所1
   |-com
       | -__init__。py
       | -foo1
          | -__init__。py
          | -bar1.py

場所2
   |-com
       | -__init__。py
       | -foo2
          | -__init__。py
          | -bar2.py

2つの場所は、上記の順序でPYTHONPATHにあります。com.foo2.bar2をインポートしようとすると、次のエラーが発生します。

トレースバック(最後の最後の呼び出し):
  ファイル""、1行目、
ImportError:foo2という名前のモジュールがありません

トップレベルのパッケージ名をcom2(つまり、location2 / com2 / foo2 / bar2.py)に変更すると、インポートステートメントは成功します。

私は何か間違ったことをしていると思います、誰か助けてもらえますか?

ありがとう。

4

2 に答える 2

1

必要なのは、Pythonでは名前空間パッケージと呼ばれます。標準ライブラリでそれらを行う1つの方法は、pkgutilを使用することです。もう1つの方法は、distributeまたはsetuptoolsプロジェクトによって提供されるサードパーティモジュールpkg_resourcesを使用することです。

名前空間パッケージのサポートは、PEP382を使用して標準ライブラリとインタプリタで改善されます。

于 2012-02-25T05:28:29.960 に答える
0

Python のインポート メカニズムは、単一のパッケージを複数のソース ツリーに分割することをサポートしていないようです。

これは、Python のインポート フック PEP 302 によるブートストラップを使用して実現します: http://www.python.org/dev/peps/pep-0302/

于 2011-06-01T07:06:43.073 に答える