导入同级目录(再次)

时间:2013-09-29 16:04:25

标签: python python-import

我有以下目录结构:

src/
    main/
        somecode/
            A.py
            B.py
            __init__.py
        __init__.py
    test/
        somecode/
            testA.py
            testB.py
            __init__.py
        __init__.py
    __init__.py

我能够成功地将以下内容添加到测试模块中:

import sys
sys.path.insert(0, "absolute path to src")

允许我从src文件夹运行nosetests。但问题是当其他人使用我的代码时,这不起作用,因为他们的绝对路径并没有不同。

然后我尝试了:

import sys, os
sys.path.append(os.path.abspath('../../../main/somecode')
from main.somecode import A

从src / test / somecode工作得很好,但我无法从src文件夹运行nosetests,因为相对路径不起作用。

我也尝试过... main.somecode import A但它不喜欢它,即使它们都是python包。

那我该怎么办? This似乎是一个潜在的答案,但他没有解释在哪里添加代码。

1 个答案:

答案 0 :(得分:1)

而不是使用相对路径(“../../../main/somecode”) 可以使用__file__全局变量执行相同的操作:

tests_dir = os.path.dirname(__file__)
sys.path.append(os.path.join(tests_dir, "..", "..", "..", "main", "somecode"))

我会把它放在“test / somecode”下的__init__.py文件中 为每个测试模块文件添加它。