相关疑难解决方法(0)

Python模块的绝对与显式相对导入

我想知道在Python应用程序中导入包的首选方法.我有这样的包结构:

project.app1.models
project.app1.views
project.app2.models
Run Code Online (Sandbox Code Playgroud)

project.app1.views进口project.app1.modelsproject.app2.models.有两种方法可以实现这一点.

绝对进口:

import A.A
import A.B.B
Run Code Online (Sandbox Code Playgroud)

或者使用PEP 328Python 2.5中引入的显式相对导入:

# explicit relative
from .. import A
from . import B
Run Code Online (Sandbox Code Playgroud)

什么是最pythonic的方式来做到这一点?

python package python-import

73
推荐指数
3
解决办法
4万
查看次数

如何在python中完成相对导入

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中

python relative-path python-2.x python-packaging

23
推荐指数
3
解决办法
4万
查看次数