2015-09-18 1 views
1

J'essaie d'exécuter un simple morceau de code en utilisant pyzmq. J'utilise Python 2.7 et pyzmq 14,5ImportError: impossible d'importer les constantes de nom

$ python --version 
Python 2.7.6 
$ sudo find /usr -name "*pyzmq*" 
/usr/local/lib/python2.7/dist-packages/pyzmq-14.5.0.egg-info 
/usr/lib/python2.7/dist-packages/pyzmq-14.0.1.egg-info 

Voici le code que je suis en train de courir:

import zhelpers 

context = zmq.Context.instance() 
server = context.socket(zmq.ROUTER) 
server.bind("tcp://*:5678") 

while (1): 
    address, empty, data = server.recv_multipart() 

    print("address = %s, data = %d" % (address, int(data))) 

    data_i = int(data) + 10 
    server.send_multipart([ 
     address, 
     b'', 
     str(data_i), 
    ]) 

Mais, je reçois l'erreur suivante et ai aucune idée comment résoudre ce problème:

Traceback (most recent call last): 
    File "reqrep_server.py", line 8, in <module> 
    import zhelpers 
    File "/home/arun/pyzmq_server/zhelpers.py", line 11, in <module> 
    import zmq 
    File "/home/arun/pyzmq_server/zmq/__init__.py", line 66, in <module> 
    from zmq import backend 
    File "/home/arun/pyzmq_server/zmq/backend/__init__.py", line 41, in <module> 
    reraise(*exc_info) 
    File "/home/arun/pyzmq_server/zmq/backend/__init__.py", line 29, in <module> 
    _ns = select_backend(first) 
    File "/home/arun/pyzmq_server/zmq/backend/select.py", line 27, in select_backend 
    mod = __import__(name, fromlist=public_api) 
    File "/home/arun/pyzmq_server/zmq/backend/cython/__init__.py", line 6, in <module> 
    from . import (constants, error, message, context, socket, utils, _poll, _version, _device) 
ImportError: cannot import name constants 

J'ai copié l'ensemble dossier ZMQ et placé dans le niveau que mon dossier .py.

Aidez s'il vous plaît!

EDIT:

J'ai enlevé ces deux versions de pyzmq et réinstallées dernière pyzmq (avec libzmq fourni cette fois-ci) comme indiqué here.

$ sudo find /usr -name "*pyzmq*" 
/usr/local/lib/python2.7/dist-packages/pyzmq-14.7.0-py2.7.egg-info 

$ sudo find /usr -name "*libzmq*" 
/usr/local/lib/libzmq.so 
/usr/local/lib/libzmq.la 
/usr/local/lib/libzmq.so.5.0.0 
/usr/local/lib/pkgconfig/libzmq.pc 
/usr/local/lib/libzmq.so.5 
/usr/local/lib/python2.7/dist-packages/zmq/libzmq.so 
/usr/local/lib/python2.7/dist-packages/zmq/backend/cython/libzmq.pxd 
/usr/local/lib/libzmq.a 

Mais cela ne résout pas le problème. Je reçois la même erreur!

Edit:

Problème résolu! Je suis un débutant à Python et ne suivais pas la bonne structure de dossier/module pour l'importation. Cependant, le retraçage n'a pas été très utile.

+0

Il semble que vous avez deux versions installées. Essayez de recommencer. Supprimez tous les paquets pyzmq et réinstallez-les (en utilisant pip ou autre). – Keith

+0

Ne copiez aucun paquet Python dans votre code. Il est structuré de manière spécifique et suit des règles très strictes et complexes lors de l'importation. Cela ne réglera pas définitivement le problème, même si cela aurait pu être le cas. L'erreur doit être ailleurs. –

+2

Content que vous ayez résolu votre problème! Vous devez soumettre une réponse et, lorsque cela est autorisé, l'accepter, afin que les futurs lecteurs sachent que le problème est résolu. – Jason

Répondre

1

J'ai rencontré un problème similaire. pip install --upgrade pyzmq a fait l'affaire pour moi