我想知道在Python应用程序中导入包的首选方法.我有这样的包结构:
project.app1.models
project.app1.views
project.app2.models
Run Code Online (Sandbox Code Playgroud)
project.app1.views进口project.app1.models和project.app2.models.有两种方法可以实现这一点.
绝对进口:
import A.A
import A.B.B
Run Code Online (Sandbox Code Playgroud)
或者使用PEP 328在Python 2.5中引入的显式相对导入:
# explicit relative
from .. import A
from . import B
Run Code Online (Sandbox Code Playgroud)
什么是最pythonic的方式来做到这一点?
stuff/
__init__.py
mylib.py
Foo/
__init__.py
main.py
foo/
__init__.py
script.py
Run Code Online (Sandbox Code Playgroud)
script.py 想要导入 mylib.py
这只是一个例子,但实际上我只是想在父目录中进行模块的相对导入.我尝试过各种各样的东西并得到这个错误......
Attempted relative import beyond toplevel package
我在某处读到程序启动的脚本不应该在包中,我尝试修改结构就像这样......
stuff/
mylib.py
foo.py // equivalent of main.py in above
foo/
__init__.py
script.py
Run Code Online (Sandbox Code Playgroud)
但得到了同样的错误.
我怎么能做到这一点?这甚至是一种适当的方法吗?
编辑:在Python 2中