0

我有以下设置:

/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__))))

问题

如何设置我的项目,使每个包都知道其父目录中的其他包,该父目录也是项目的根目录?

4

1 回答 1

1

您的问题是您有一个project/modules/api.py 文件以及一个包含文件的projects/api 目录__init__.py- 您遇到了描述符冲突。将其中一个重命名为其他名称,您的代码应该可以工作:

/project/
    /api/
        __init__.py
        test.py
    /modules/
        __init__.py
        foo.py

然后运行python modules/foo.py并在 foo.py 中:

from ..api import test

或者:

import sys
import os
sys.path.append(os.path.abspath('../api'))
import test
于 2013-07-17T17:44:16.830 回答