2015-12-08 195 views
0

我在運行Fedora 20的Linux機器上安裝了zeroconf。我已經安裝了zeroconf所依賴的所有軟件包。但是,當我嘗試運行testcert.py時,遇到以下錯誤:AttributeError:'module'對象沒有'unique'屬性

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。

+1

是不是你的任何模塊掩蓋了'enum'模塊。你不在'PYTHONPATH'的其他地方有'enum.py'嗎? – memoselyk

+0

如何找出哪個模塊掩蓋枚舉模塊?目前,我在/usr/lib/python2.7/site-packages中安裝了enum和enum-compat。 – ap6491

+0

怎麼樣'進口枚舉;打印枚舉? – memoselyk

回答

6

問題是由於安裝了enumenum-compat而導致安裝enum34

enumenum34都公開了相同的名稱空間,稱爲enum的頂級程序包。 zeroconf將假定它從enum34包中加載enum

如果你不需要enum,我會建議你卸載它。 否則使用virtualenv,因此您可以爲不同的包安裝enum34enum不同的環境。

+0

謝謝@memoselyk。該建議奏效了。我刪除了enum和enum-compat,並且剛剛從源代碼安裝了enum34。這也安裝枚舉。 – ap6491

+0

不客氣!只需要澄清一下,'enum-compat'軟件包可以在3.4以前的python上使用['enum'軟件包](https://docs.python.org/3.4/library/enum.html)。因此,如果您只確保沒有安裝'enum'並且讓enum-compat'安裝'enum34'(如果需要),那麼會更好。 – memoselyk