2
私は、次のディレクトリ構造を持つ単純なPythonのパッケージを持っている:Pythonモジュール、同じパッケージ内の他のモジュールを参照していますか?
wibble
|
|-----foo
| |----ping.py
|
|-----bar
| |----pong.py
簡単な質問:どのように私はpong.py
からping.py
内の関数/クラスを参照しますか?ドキュメントを見ると、wibble
、foo
、bar
のルートに__init__.py
というファイルを作成し、次にfrom wibble.foo.ping import important_function
のようなファイルを作成するのと同じように簡単です。しかし、これを試みるとNo module named wibble.foo.ping
になります。
これは可能でなければならないため、私はどこかのドキュメントで何かを逃してしまったと確信しています。私はまた、module
とnamespace
の区別に少し曇っています。私の背景はc#.netなので、ここでの類推は役に立ちます。
である
です(the official documentationを参照してください)Pythonのパスにwibble追加する必要があるので、それは 'PATHだろう=%PATH%; c:\ path \ to \ wibble'(ちょっと推測するとC#.net参照) – alan
これは* nix上で開発されているはずです。このソリューションに関する私の懸念は、パッケージの絶対的な位置をコードベース/インフラストラクチャに結びつけることです。これらのファイルが互いに対して相対的に容易に見つかることを考えれば、なぜ 'pong'が' wibble'パッケージに入っているのかを知ることができません。 – growse
pong.pyファイルの場所をdinamicly推測して、pythonパスにwibbleフォルダを追加することはできますが、確かに悪い習慣です – diegueus9