私はPython 3.5.1を使用しています。私はここでドキュメントとパッケージセクションを読みました:https : //docs.python.org/3/tutorial/modules.html#packages
今、私は次の構造を持っています:
/home/wujek/Playground/a/b/module.py
module.py
:
class Foo:
def __init__(self):
print('initializing Foo')
今、中に/home/wujek/Playground
:
~/Playground $ python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x100a8f0b8>
同様に、今は家にありPlayground
ます:
~ $ PYTHONPATH=Playground python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x10a5fee10>
実際、私はあらゆることを行うことができます:
~ $ PYTHONPATH=Playground python3
>>> import a
>>> import a.b
>>> import Playground.a.b
なぜこれが機能するのですか?私があることが必要なものの__init__.py
、両方のファイル(空のものが動作します)a
とb
のためにmodule.py
インポート可能にするときにPythonのパスポイントPlayground
フォルダ?
これはPython 2.7から変更されたようです:
~ $ PYTHONPATH=Playground python
>>> import a
ImportError: No module named a
>>> import a.b
ImportError: No module named a.b
>>> import a.b.module
ImportError: No module named a.b.module
__init__.py
両方で~/Playground/a
と~/Playground/a/b
それが正常に動作します。