我有以下目录结构:
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似乎是一个潜在的答案,但他没有解释在哪里添加代码。
答案 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文件中 为每个测试模块文件添加它。