Python 如何导入名称与包中的模块冲突的模块?
我在一个目录中有几个python模块 在同一个目录中,我有一个包Python 如何导入名称与包中的模块冲突的模块?,python,import,Python,Import,我在一个目录中有几个python模块 在同一个目录中,我有一个包tests 我很想将测试中的模块命名为与它们包含测试的模块相同的模块,当然这并不重要 因此,在tests.foo中,我天真地编写了importfoo。这不太好用-它导入tests.foo,而不是顶级foo 我可以做我想做的吗,还是只需要调用测试模块test\u foo 很抱歉,如果这是明显的或重复的,我的搜索fu已失败。使用完整的包路径,如下所示: --Package |-- __init__.py |-- foo.py
tests
我很想将测试中的模块命名为与它们包含测试的模块相同的模块,当然这并不重要
因此,在tests.foo
中,我天真地编写了importfoo
。这不太好用-它导入tests.foo
,而不是顶级foo
我可以做我想做的吗,还是只需要调用测试模块test\u foo
很抱歉,如果这是明显的或重复的,我的搜索fu已失败。使用完整的包路径,如下所示:
--Package
|-- __init__.py
|-- foo.py
|
|-- tests
| | -- __init__.py
| -- foo.py
在tests/foo.py
do中
from Package import foo
我认为这部分文档可能会让您感兴趣:test\u foo.py
在这种情况下似乎是一个合适的解决方案
如果不重命名测试模块,则将tests
目录放入Python包(添加tests/\uuuu init\uuuuuuuuuuupy
文件)并使用:
谢谢,但是“ValueError:尝试在顶级包之外进行相对导入”。这就是Python2.6,如果它有什么不同的话。你可能是对的,我本来应该把所有东西都放在一个顶级软件包中。我不确定现在的更改是否会无痛。@Steve Jessop:对不起,我的意思是使用完整的包路径来导入foo
模块,我编辑了它,我希望现在已经清楚了
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