Python 配置--安装ROS Kineti后,如何才能正确的import cv2

ubuntu16.04安装完 ROS Kinetic 后,打开虚拟环境(我是用pyenv 与virtualenv搭建的python虚拟环境)或系统自带的python 3.x 后 import cv2时出现

Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Traceback (most recent call last):
  File "", line 1, in <module>
ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type

可以尝试通过如下步骤解决这个问题(这里我就虚拟环境下进行说明):

  • 首先找到对应的python 3. x版本(我这里对应的python 3.6.0)在虚拟环境下的site-packages,我这对应的为/home/aii/.pyenv/versions/3.6.0/envs/env360/lib/python3.6/site-packages
  • 然后 gedit  ~/.bashrc,打开.bashrc ,在.bashrc中添加site-packages的路径,如我对应的添加export PYTHONPATH="/home/aii/.pyenv/versions/3.6.0/envs/env360/lib/python3.6/site-packages:$PYTHONPATH",别忘记source ~/.bashrc
  • 然后重新import cv2,就可以正常工作了
  • 在运行过程中可能会出现AttributeError:module 'enum' has no attribute 'IntFlag',这是因为enum 不兼容python3.6,可以通过卸载解决: pip3 uninstall enum34
  • 参考请看参考资料

你可能感兴趣的:(Python学习)