我正在为我的GitHub存储库设置Travis-CI,在创建测试后,我意识到我遇到了一个问题。
我的文件结构如下:
parent-dir:
src:
prog.py
generator.py
test:
test.py
Travis设置为运行test.py文件,然后执行以下命令:
variables = {'help': '-h'}
execfile(sys.path[0] + "/../src/prog.py", variables)
这可以正常工作。但问题是,prog.py
导入generator.py
为:
from generator import generate, languages
当我运行测试时,我收到错误:ImportError: No module named generator
我做了一些窥探,发现当我执行第二个文件时sys.path[0]
没有更新。
我的问题是,有没有办法在执行另一个文件时获得更新路径,或者更简单地获取模块的位置?
我的代码如下:
test.py
import os
import unittest2
import tests # Self reference for working directory.
relative_dir = os.path.dirname(tests.__file__)
class Test(unittest2.TestCase):
def test_program(self):
msg('Attempting to generate example utility.') # just prints the message, nothing interesting
variables = {'help': '-h'} # command line variables
execfile(relative_dir + "/../src/prog.py", variables)
prog.py
import os
import prog # This file.
relative_dir = os.path.dirname(dash_h.__file__)
我不打扰显示generator.py
,因为这和需要一样完整。无论生成器如何,即使只从自身导入prog
也会抛出完全相同的错误。
ImportError: No module named prog
我正在终端中从parent-dir目录执行以下命令:
python -B test/test.py
如果存在后者,我实际上想将其合并到我拥有的所有其他文件中。
答案 0 :(得分:0)
我的建议是将路径作为命令行参数传递给输入文件。