2015-12-08 2 views
0

Я установил zeroconf на Linux-машине под управлением Fedora 20. Я установил все пакеты, от которых зависит 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'. У вас нет 'enum.py' где-то еще в' PYTHONPATH'? – memoselyk

+0

Как узнать, какой модуль маскирует модуль enum? В настоящее время у меня есть enum и enum-compat, установленный в /usr/lib/python2.7/site-packages. – ap6491

+0

Как насчет 'import enum; распечатать enum'? – memoselyk

ответ

6

Проблема связана с установкой как enum, так и enum-compat, который устанавливает enum34.

Оба enum и enum34 выставляют одно и то же пространство имен, пакет верхнего уровня, называемый enum. zeroconf будет считать, что он загружается enum из enum34 package.

Если вам не нужен enum, я порекомендую его удалить. В противном случае используйте virtualenv, так что вы можете иметь как enum34, так и enum, установленные в разных средах для разных пакетов.

+0

Спасибо @memoselyk. Эта рекомендация работала. Я удалил enum и enum-compat и только что установил enum34 из источника. Это тоже перечислить. – ap6491

+0

Добро пожаловать! Только одно уточнение, пакет 'enum-compat' делает пакет [' enum'] (https://docs.python.org/3.4/library/enum.html) доступным на python раньше, чем 3.4. Так что лучше, если вы только убедитесь, что 'enum' не установлен и пусть' enum-compat' устанавливает 'enum34', если это необходимо. – memoselyk

Смежные вопросы