【发布时间】:2015-12-15 02:14:21
【问题描述】:
我正在尝试使用 pyzmq 运行一段简单的代码。我正在使用 Python 2.7 和 pyzmq 14.5
$ 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
以下是我要运行的代码:
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),
])
但是,我收到以下错误,不知道如何解决这个问题:
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
我已经复制了整个 zmq 文件夹并将其作为我的 .py 文件放置在关卡中。
请帮忙!
编辑:
我已经按照here 的指示删除了这两个版本的 pyzmq 并重新安装了最新的 pyzmq(这次捆绑了 libzmq)。
$ 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
但这并不能解决问题。我遇到了同样的错误!
【问题讨论】:
-
您好像安装了两个版本。尝试重新开始。删除所有 pyzmq 包并重新安装它(使用 pip 或其他)。
-
不要将任何 Python 包复制到您的代码中。它以特定方式构建,并且在导入时遵循非常严格和复杂的规则。这绝对不能解决问题,即使它可能看起来像这样。错误一定在其他地方。
-
很高兴您解决了问题!您应该提交答案,并在允许的情况下接受它,以便将来的读者知道问题已解决。
-
你是怎么解决你的问题的?