模块同名时导入python包

时间:2012-10-04 19:46:29

标签: python module namespaces

我有一个模块blah.time,我会在正常的时间和日期操作中进行一些健全性检查和包装函数:

import time

def sleep(n):
    time.sleep(n)

当我调用sleep时,它只会引发最大递归错误。我猜测命名空间是错误的,所以我尝试使用import time as _time,但我仍然得到同样的错误。

如何从我自己的模块中引用系统time模块以防止此命名空间冲突?

3 个答案:

答案 0 :(得分:14)

添加from __future__ import absolute_import作为文件的第一行。

这会强制所有进口都是绝对的而不是相对的。因此import time将导入标准模块,以导入您使用的本地模块from . import foobar

答案 1 :(得分:3)

我会阅读http://docs.python.org/whatsnew/2.5.html#pep-328-absolute-and-relative-imports,然后使用from __future__ import absolute_import

HTH

答案 2 :(得分:0)

正在发生的事情是您的time模块正在影响系统time模块。解决此问题的最简单方法是将模块重命名为time以外的其他内容。