Python软件包:相对导入


问题内容

我正在研究一个Python应用程序,该应用程序由一个核心和使用该核心的多个独立模块组成。我在设置软件包的相对导入方面遇到困难。

app
  |- __init__.py
  |- core
        |- __init__.py
        |- corefile.py

  |- module1
        |- __init__.py
        |- main.py

__init__.py文件是空的。我正在运行Python 2.7.1。

main.py
from .core import *

在中运行python main.py结果ValueError: Attempted relative import in non-package

类似的问题:相对python导入的最终答案如何在python中进行相对导入?Python中的相对导入

谢谢您的帮助。


问题答案:

简而言之,您只能使用从自身导入的程序包中的相对导入。

例如,如果您有:

$ cat run.py
from app.module1 import main
main.main()
$ python run.py

然后,您可以使用相对导入app/module1/main.py(尽管它必须为from ..core import foo,因为core/它在上一级main.py)。