4

我正在开发一个 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 中的相对导入

谢谢您的帮助。

4

2 回答 2

2

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

例如,如果您有:

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

然后你可以使用相对导入app/module1/main.py(虽然它需要是from ..core import foo,因为core/是上一层main.py)。

于 2012-04-07T23:07:10.593 回答
0
import sys
abs_filepath = '/home/n/Documents/IMPORTANT/deep_learning/drori_2018/    final_proj/Ryans_branch/StackGAN/'
# insert your absolute filepath above as abs_filepath = '/path/to/targ/dir'
sys.path.append(abs_filepath)

import如果这样做有问题,请更正

其他答案:

另请参阅此处以获取有关正在发生的事情的详尽答案。

于 2018-03-30T20:32:52.350 回答