【问题标题】:import python package when module is same name当模块同名时导入python包
【发布时间】:2012-09-25 22:20:02
【问题描述】:

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

import time

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

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

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

【问题讨论】:

    标签: python module namespaces


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      HTH

      【讨论】:

        【解决方案3】:

        发生的情况是您的 time 模块正在遮蔽系统 time 模块。解决此问题的最简单方法是将模块重命名为 time 以外的名称。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-10-26
          • 2011-10-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-31
          • 1970-01-01
          相关资源
          最近更新 更多