我有以下设置:
/project/
/api/
__init__.py
test.py
/modules/
__init__.py
api.py
我正在尝试从/ project /目录运行api.py: python modules/api.py
api模块尝试从api包导入测试模块,但失败了。我尝试过以下方法:
import api.test
import project.api.test # (with an __init__.py in my /project/ directory)
我甚至试图将api包的父目录添加到系统路径中,如下所述:
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
如何以这样的方式设置我的项目:每个包都知道其父目录中的其他包,这也是项目的根目录?
答案 0 :(得分:1)
您的问题是,您有一个project/modules/api.py
文件以及一个projects/api
目录,其中包含__init__.py
个文件 - 你正在获得描述符冲突。将其中一个重命名为其他内容,您的代码应该可以工作:
/project/
/api/
__init__.py
test.py
/modules/
__init__.py
foo.py
然后在foo.py:
中运行python modules/foo.py
from ..api import test
或者:
import sys
import os
sys.path.append(os.path.abspath('../api'))
import test