我使用的是Python 3.5.1.我在这里阅读了文档和包部分:https://docs.python.org/3/tutorial/modules.html#packages
现在,我有以下结构:
/home/wujek/Playground/a/b/module.py
Run Code Online (Sandbox Code Playgroud)
module.py:
class Foo:
def __init__(self):
print('initializing Foo')
Run Code Online (Sandbox Code Playgroud)
现在,在/home/wujek/Playground:
~/Playground $ python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x100a8f0b8>
Run Code Online (Sandbox Code Playgroud)
同样,现在在家里,超级文件夹Playground:
~ $ PYTHONPATH=Playground python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x10a5fee10>
Run Code Online (Sandbox Code Playgroud)
实际上,我可以做各种各样的事情:
~ $ PYTHONPATH=Playground python3
>>> import a
>>> import a.b
>>> import Playground.a.b
Run Code Online (Sandbox Code Playgroud)
为什么这样做?我虽然有被需要的__init__.py文件(空的都可以)两种a,并b为module.py要导入的时候Python的路径指向Playground文件夹?
这似乎已经从Python 2.7改变了:
~ $ PYTHONPATH=Playground …Run Code Online (Sandbox Code Playgroud) 无处不在,我看到Python代码使用import sys或导入模块import mymodule
如果没有提供目录或路径,解释器如何找到正确的文件?