【问题标题】:AttributeError: 'module' object has no attribute 'unique'AttributeError:“模块”对象没有“唯一”属性
【发布时间】:2016-03-13 22:36:10
【问题描述】:

我在运行 Fedora 20 的 linux 机器上安装了 zeroconf。我已经安装了 zeroconf 所依赖的所有软件包。但是,当我尝试运行 testcert.py 时,遇到以下错误:

Traceback (most recent call last):
  File "./testcert.py", line 49, in <module>
    import _mdns
  File "/opt/home/gcp_cert_test/_mdns.py", line 23, in <module>
    from zeroconf import InterfaceChoice
  File "/usr/lib/python2.7/site-packages/zeroconf-0.17.4-py2.7.egg/zeroconf.py", line 1257, in <module>
    @enum.unique
AttributeError: 'module' object has no attribute 'unique'

我需要安装任何其他软件包吗?我正在使用 Python 2.7。

【问题讨论】:

  • 您的任何模块都没有屏蔽enum 模块。你在PYTHONPATH 的其他地方没有enum.py 吗?
  • 如何找出哪个模块屏蔽了枚举模块?目前,我在 /usr/lib/python2.7/site-packages 中安装了 enum 和 enum-compat。
  • import enum; print enum 呢?
  • 这是我得到的: print enum 。所以效果很好。

标签: python linux python-2.7 zeroconf


【解决方案1】:

问题是由于同时安装了enumenum-compat 而安装了enum34

enumenum34 都公开相同的命名空间,即名为 enum 的顶级包。 zeroconf 将假定它正在从 enum34 包加载 enum

如果你不需要enum,我会建议你卸载它。 否则使用virtualenv,这样您就可以将enum34enum 安装在不同环境中的不同包中。

【讨论】:

  • 谢谢@memoselyk。该建议奏效了。我删除了 enum 和 enum-compat 并从源代码中安装了 enum34 。这个也安装枚举。
  • 不客气!只需澄清一点,enum-compat 包使enum package 在 3.4 之前的 python 上可用。因此,最好只确保未安装 enum 并在需要时让 enum-compat 安装 enum34
猜你喜欢
  • 2010-11-18
  • 2018-08-28
相关资源
最近更新 更多