我首先使用这个script从源代码安装了openCV。 当我测试时,它运行良好
在我安装了ROS kinetic,打开python3
并运行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 "<stdin>", line 1, in <module>
ImportError: /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so: undefined symbol: PyCObject_Type
看起来这个问题是由ROS向python路径添加
/opt/ros/kinetic/lib/python2.7/dist-packages
引起的。当您使用命令source /opt/ros/kinetic/setup.bash
激活ROS时,实际上会发生这种情况。这一行通常添加在bashrc文件的末尾/home/username/.bashrc
解决方法是从bashrc文件中删除这一行。这样就可以正确使用python3opencv包,并且您仍然可以运行
source /opt/ros/kinetic/setup.bash
来使用ROS。但是,这意味着您不能在同一环境中使用ROS和python3希望有人能想出一个更好的答案,但在那之前这应该是可行的
如果您正在使用anaconda,请激活您想要使用的环境,并从
sys.path
中移除罪犯为此,请打开python3控制台,其中:
您将看到几个路径,其中您应该注意:
然后将其移除:
使用本地编译的opencv在anaconda3上使用python3.5进行测试。这可能也适用于
virtualenvs
对于永久解决方案,请删除@Paul的答案中提到的
'/opt/ros/kinetic/lib/python2.7/dist-packages'
路径如前所述,
.bashrc
中的source /opt/ros/kinetic/setup.bash
命令将PYTHONPATH
修改为:在我的例子中,因为我在Python3项目中使用virtualenv,所以在激活virtualenv时,我只运行以下命令来清除
PYTHONPATH
变量现在,在python3virtualenv中导入
cv2
可以干净地工作。我验证了cv2
的路径:为了避免每次激活该virtualenv时都必须运行此命令,我将其添加到virtualenv目录中的
/bin/activate
文件中,如下所示:相关问题 更多 >
编程相关推荐