系统路径和模块

时间:2013-07-17 17:24:11

标签: python directory filesystems package python-module

我有以下设置:

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

问题

如何以这样的方式设置我的项目:每个包都知道其父目录中的其他包,这也是项目的根目录?

1 个答案:

答案 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