美文网首页
ROS Kinetic 同时使用 python3 和 pytho

ROS Kinetic 同时使用 python3 和 pytho

作者: Puccino | 来源:发表于2020-10-30 11:50 被阅读0次

在配置基于python3的Kinetic时,我们往往会把ros自带的cv2做一个重命名:

/opt/ros/kinetic/lib/python2.7/dist-packages$ sudo mv cv2.so cv2_ros.so

然而这样做的坏处时,当我们又想使用python2下的包时,发现cv2不能导入了。

>>> import cv2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named cv2

为了解决这个问题,首先来看一下当前python环境下有哪些变量存在:

>>> import sys
>>> sys.path

['', '/opt/ros/kinetic/lib/python2.7/dist-packages', '/home/yourname/python3-env/lib/python35.zip', '/home/yourname/python3-env/lib/python3.5', '/home/yourname/python3-env/lib/python3.5/plat-x86_64-linux-gnu', '/home/yourname/python3-env/lib/python3.5/lib-dynload', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/home/yourname/python3-env/lib/python3.5/site-packages', '/home/yourname/python3-env/lib/python3.5/site-packages/pycocotools-2.0-py3.5-linux-x86_64.egg', '/home/yourname/python3-env/lib/python3.5/site-packages']


可以看到,ros自带的python2.7出现在了环境变量里,猜想也许是某些ros的功能需要这个目录。

因此,为了实现包含这个目录的同时又不使用它下面的cv2,可以把这条变量加到最后面去:

import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
sys.path.append('/opt/ros/kinetic/lib/python2.7/dist-packages')
import cv2

这样基本可以实现不破坏原来python2的环境下使用python3。

相关文章

网友评论

      本文标题:ROS Kinetic 同时使用 python3 和 pytho

      本文链接:https://www.haomeiwen.com/subject/bptdvktx.html