Python包:相对导入

时间:2012-04-07 22:50:38

标签: python python-module relative-import

我正在开发一个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

类似问题:Ultimate answer to relative python importsHow to do relative imports in Python?Relative imports in Python

感谢您的帮助。

2 个答案:

答案 0 :(得分: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高一级。)

答案 1 :(得分: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这种方式出现问题,请更正

其他答案:

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