ImportError:未定义的符号zmq_strerror

问题描述

我正在尝试安装Jupyter Notebook来运行TensorFlow 2模型教程。 (https://tensorflow2objectdetectioninstallation.readthedocs.io/en/latest/install.html#tensorflow-models-installation)这些软件包似乎安装得很好,但是当我尝试运行时:

jupyter notebookpython3.7 -m jupyter notebook

我收到此错误

pi@raspBerrypi:~/Desktop/stonesoup_testing/TensorFlow/models/research/object_detection $ python3.7 -m jupyter notebook
Traceback (most recent call last):
  File "/home/pi/.local/bin/jupyter-notebook",line 5,in <module>
    from notebook.notebookapp import main
  File "/home/pi/.local/lib/python3.7/site-packages/notebook/notebookapp.py",line 51,in <module>
    from zmq.eventloop import ioloop
  File "/home/pi/.local/lib/python3.7/site-packages/zmq/__init__.py",line 50,in <module>
    from zmq import backend
  File "/home/pi/.local/lib/python3.7/site-packages/zmq/backend/__init__.py",line 40,in <module>
    reraise(*exc_info)
  File "/home/pi/.local/lib/python3.7/site-packages/zmq/utils/sixcerpt.py",line 34,in reraise
    raise value
  File "/home/pi/.local/lib/python3.7/site-packages/zmq/backend/__init__.py",line 27,in <module>
    _ns = select_backend(first)
  File "/home/pi/.local/lib/python3.7/site-packages/zmq/backend/select.py",line 28,in select_backend
    mod = __import__(name,fromlist=public_api)
  File "/home/pi/.local/lib/python3.7/site-packages/zmq/backend/cython/__init__.py",line 6,in <module>
    from . import (constants,error,message,context,ImportError: /home/pi/.local/lib/python3.7/site-packages/zmq/backend/cython/error.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: zmq_strerror
pi@raspBerrypi:~/Desktop/stonesoup_testing/TensorFlow/models/research/object_detection $

在Raspbian Stretch上,使用Python 3.7,pymzq版本:19.0.2

这是我的pip freeze输出

pi@raspBerrypi:~/Desktop/stonesoup_testing/TensorFlow/models/research/object_detection $ python3.7 -m pip freeze
actionlib==1.11.13
angles==1.9.11
argon2-cffi==20.1.0
attrs==20.1.0
backcall==0.2.0
bleach==3.1.5
bondpy==1.8.3
camera-calibration-parsers==1.11.13
catkin==0.7.14
certifi==2020.6.20
cffi==1.14.2
cv-bridge==1.12.8
cycler==0.10.0
Cython==0.29.21
decorator==4.4.2
defusedxml==0.6.0
diagnostic-analysis==1.9.3
diagnostic-common-diagnostics==1.9.3
diagnostic-updater==1.9.3
dynamic-reconfigure==1.5.50
entrypoints==0.3
gencpp==0.6.0
geneus==2.2.6
genlisp==0.4.16
genmsg==0.5.11
gennodejs==2.0.1
genpy==0.6.7
importlib-Metadata==1.7.0
ipykernel==5.3.4
ipymd==0.1.3
ipython==7.18.1
ipython-genutils==0.2.0
ipywidgets==7.5.1
jedi==0.17.2
Jinja2==2.11.2
jsonschema==3.2.0
jupyter==1.0.0
jupyter-client==6.1.7
jupyter-console==6.2.0
jupyter-core==4.6.3
kiwisolver==1.2.0
MarkupSafe==1.1.1
matplotlib==3.3.1
message-filters==1.12.14
mistune==0.8.4
nbconvert==5.6.1
nbformat==5.0.7
notebook==6.1.3
numpy==1.19.1
object-detection==0.1
packaging==20.4
pandocfilters==1.4.2
parso==0.7.1
pexpect==4.8.0
pickleshare==0.7.5
Pillow==7.2.0
pluginlib==1.11.3
prometheus-client==0.8.0
prompt-toolkit==3.0.7
ptyprocess==0.6.0
pycparser==2.20
Pygments==2.6.1
pyparsing==2.4.7
pyrsistent==0.16.0
python-dateutil==2.8.1
python-qt-binding==0.3.4
PyYAML==5.3.1
pyzmq==19.0.2
qtconsole==4.7.6
qtpy==1.9.0
resource-retriever==1.12.4
rosbag==1.12.14
rosboost-cfg==1.14.4
rosclean==1.14.4
roscreate==1.14.4
rosgraph==1.12.14
roslaunch==1.12.14
roslib==1.14.4
roslint==0.11.0
roslz4==1.12.14
rosmake==1.14.4
rosmaster==1.12.14
rosmsg==1.12.14
rosnode==1.12.14
rosparam==1.12.14
rospy==1.12.14
rosserial-python==0.7.7
rosservice==1.12.14
rostest==1.12.14
rostopic==1.12.14
rosunit==1.14.4
roswtf==1.12.14
Send2Trash==1.5.0
sensor-msgs==1.12.7
six==1.15.0
smach==2.0.1
smach-ros==2.0.1
smclib==1.8.3
terminado==0.8.3
testpath==0.4.4
tf==1.11.9
tf-conversions==1.11.9
tf2-kdl==0.5.20
tf2-py==0.5.20
tf2-ros==0.5.20
topic-tools==1.12.14
tornado==6.0.4
traitlets==5.0.0
wcwidth==0.2.5
webencodings==0.5.1
widgetsnbextension==3.5.1
xacro==1.11.3
zipp==3.1.0
zmq==0.0.0

解决方法

我卸载了pyzmq,而是从源代码构建了它。这解决了我的问题,我现在可以正常运行jupyter notebook。我现在遇到另一个问题,其中numpy无法从jupyter内部正确导入。