我在目录中有几个python模块。
在同一目录中,我有一个包tests
。
我非常希望将tests
中的模块命名为与它们包含测试的模块相同,但当然它并不重要。
所以,在tests.foo
我天真地写import foo
。效果不佳 - 导入tests.foo
,而不是顶级foo
。
我可以做我想做的事情,还是只需要调用测试模块test_foo
?
对不起,如果这是显而易见的或是一个骗局,我的搜索功能失败了。
答案 0 :(得分:8)
test_foo.py
似乎是一个合适的解决方案。
如果不重命名测试模块,则将tests
目录放入Python包(添加tests/__init__.py
文件)并使用absolute imports:
from __future__ import absolute_import
import foo # import global foo.py, the first foo.py in sys.path
import tests.foo as test_foo # import tests/foo.py
答案 1 :(得分:3)
使用完整的包路径,如下所示:
--Package
|-- __init__.py
|-- foo.py
|
|-- tests
| | -- __init__.py
| -- foo.py
在tests/foo.py
做
from Package import foo
我认为文档的这一部分会让您感兴趣:http://docs.python.org/whatsnew/2.5.html#pep-328-absolute-and-relative-imports