Python 如何导入名称与包中的模块冲突的模块?

Python 如何导入名称与包中的模块冲突的模块?,python,import,Python,Import,我在一个目录中有几个python模块 在同一个目录中,我有一个包tests 我很想将测试中的模块命名为与它们包含测试的模块相同的模块,当然这并不重要 因此,在tests.foo中,我天真地编写了importfoo。这不太好用-它导入tests.foo,而不是顶级foo 我可以做我想做的吗,还是只需要调用测试模块test\u foo 很抱歉,如果这是明显的或重复的,我的搜索fu已失败。使用完整的包路径,如下所示: --Package |-- __init__.py |-- foo.py

我在一个目录中有几个python模块

在同一个目录中,我有一个包
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