ros - 如何在同一个 python3 脚本中导入 rospy 和 cv2?
问题描述
问题
无法在 python3 env 中导入 cv2,例如:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type
解决方案
第一种方法是使用 .bashrc ,例如:
source /opt/ros/kinetic/setup.bash
source ~/catkin_ws/devel/setup.bash
export PATH="$PATH:/path/anaconda2/bin"
export PYTHONPATH=$PYTHONPATH:/opt/ros/kinetic/lib/python2.7/dist-packages/:
export PYTHONPATH="/home/users/anaconda2/envs/env_name/lib/python3.5/site-packages:$PYTHONPATH"
去测试,
conda activate env_name # the python3 environment name
python -c "import rospy"
python -c "import cv2"
它将工作没有任何错误输出!!!
但是当你 ssh 到机器人控制器时它就不起作用了,例如:intera.sh sim
解决方案
第二种成功方法是编辑头文件,如:
import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
import cv2
# make sure to use import rospy in the future
sys.path.append('/opt/ros/kinetic/lib/python2.7/dist-packages')
推荐阅读
- python - Python 多处理:将任务异步分配给管理器
- ios - 无法在 iOS 上的 Azure NotificationHub 中注册设备,没有回调
- php - 如何根据另一个表的过滤器从一个表中快速返回和计算行数
- c# - 正则表达式用 Postgresql LIMIT 语法转换 Sql Server TOP 语法
- python - Avoiding For Loops / Iterating over two tables
- spring - How to send complex model with files in flutter via chopper to spring
- python - 如何替换单个字符而不影响字符在整个单词中的出现?
- c++ - I find myself lost in this error message on hackerRank's function task
- xcode - Anyone Know How to Switch butttons with Keyboard without use the Mouse on Mac?
- python - Python bz2 readlines slow in byte-mode