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

Ste*_*sop 9 python import

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

在同一目录中,我有一个包tests.

我非常希望将模块命名tests为与它们包含测试的模块相同的名称,尽管它当然并不重要.

所以,在tests.foo我天真地写import foo.这不是很好 - 它是进口tests.foo,而不是顶级foo.

我能做我想做的事情,还是只需要打电话给测试模块test_foo

对不起,如果这是显而易见的或是一个骗局,我的搜索失败了.

jfs*_*jfs 8

test_foo.py 在这种情况下似乎是一个合适的解决方案

如果不重命名测试模块,则将tests目录放入Python包(添加tests/__init__.py文件)并使用绝对导入:

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
Run Code Online (Sandbox Code Playgroud)