Python-如何使相对导入与Nose兼容
我正在处理一个文件夹结构如下的包:Python-如何使相对导入与Nose兼容,python,python-import,nose,Python,Python Import,Nose,我正在处理一个文件夹结构如下的包: Root |---Source |---Testing |---Test_Utils |---test_fixtures.py |---test_integration.py |---test_unit.py 有大量的相对引用(例如,在test_integration.py中,我需要从源文件夹中的文件导入类,以及从test_Utils文件夹导入测试线束和数据) 到目前为止,我通过使用完整的参考资
Root
|---Source
|---Testing
|---Test_Utils
|---test_fixtures.py
|---test_integration.py
|---test_unit.py
有大量的相对引用(例如,在test_integration.py中,我需要从源文件夹中的文件导入类,以及从test_Utils文件夹导入测试线束和数据)
到目前为止,我通过使用完整的参考资料来管理这一点,例如:
来自Root.Testing.Test\u Utils.Test\u fixtures import*
在实际尝试运行nosetests
之前,它似乎工作正常。这是因为nose似乎只在active directory(而不是根工作目录)中找到测试文件,所以在运行nosetests
之前,我必须cd Testing
。在这一点上,相关引用与以下内容断开:
ModuleNotFoundError: No module named 'Root'
如何避免这种看似不兼容的情况(不使用pytest,因为我使用的是我认为pytest中不推荐使用的测试生成器(即使用yield))设置导入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
检查你的
PYTHON\u路径
你能扩展一下吗?我还怀疑这是一个用户级别的变化,当我想要发布这个时,所以我不希望用户在它工作之前必须修改他们的环境变量!