Python-如何使相对导入与鼻子兼容

时间:2018-06-21 13:18:54

标签: python python-import nose

我正在处理一个具有如下文件夹结构的软件包:

Root
 |---Source
 |---Testing
      |---Test_Utils
            |---test_fixtures.py
      |---test_integration.py
      |---test_unit.py

有大量的相对引用(例如,在test_integration.py中,我需要从Source文件夹中的文件中导入类,并从Test_Utils文件夹中导入测试工具和数据。

到目前为止,我已经通过使用完整的引用来管理此问题,例如:

from Root.Testing.Test_Utils.test_fixtures import *

在实际尝试运行nosetests之前,这似乎可以正常工作。这是因为鼻子似乎只能在活动目录(而不是根工作目录)中找到测试文件,所以我必须在运行cd Testing之前nosetests。 / p>

ModuleNotFoundError: No module named 'Root'

我如何解决这种看似不兼容的问题(不使用pytest,因为我使用的是我认为在pytest中已弃用的测试生成器(即使用yield))?

1 个答案:

答案 0 :(得分:0)

PYTHONPATH设置导入python模块的搜索路径。

如果您正在使用(Mac或GNU / Linux发行版),请将其添加到~/.bashrc中。

# add this line to ~/.bashrc
export PYTHONPATH=PYTHONPATH:/path/to/folder # path where is your Root folder

# after this we need to reload ~/.bashrc
$ source ~/.bashrc

# if source ~/.bashrc don't work simple restart your terminal

# after this we can echo out our PYTHONPATH environment variable to check if it was added successfully
$ echo PYTHONPATH

# it need to output your folder