TL; DR导入,Python的2.7
对于固定的和不可改变的非封装的目录结构是这样的:
some_dir/
mod.py
test/
test_mod.py
example_data.txt
什么是一个非-package方式使test_mod.py
从mod.py
导入?
我被限制在这种情况下使用Python 2.7。
我想为mod.py
中的函数写一些测试。我想创建一个新目录test
,它与mod.py
并排,并且里面有一个测试文件test/test_mod.py
,它应该从mod.py
导入功能并测试它们。
由于相对导入的众所周知的局限性,它依赖于基于包的命名,所以不能以直接的方式完成此操作。然而,关于该主题的所有建议都建议将该脚本构建为一个包,然后使用相对导入,这对我的用例来说是不可能的。
在我的情况下,mod.py
不可以作为一个包来构建,我不能要求mod.py
的用户来安装它。他们可以自由地仅仅从版本控制中检查文件,然后开始使用它,但是他们希望,并且我无法改变这种情况。
鉴于此,有什么方法可以提供简单,直接的test
目录?
注:不只是坐在旁边mod.py
测试文件,但实际测试的目录,因为会有其他资产一样,随之而来的测试数据,和子目录组织是至关重要的。
我很抱歉如果这是重复的,但是在发布之前我在研究中看到的这个问题的十几个排列中,我还没有看到一个解决如何执行此操作的问题。他们都说要使用包装,这对我的情况来说不是一个允许的选择。
也许不是最优雅的解决方案,但您可以为您的测试跑步者修改'PYTHONPATH'。 。 。 – mgilson