環(huán)境:Ubunt18.04+Python3.6
錯(cuò)誤描述:運(yùn)行
import cv2
出現(xiàn)如下錯(cuò)誤信息:
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
錯(cuò)誤原因:
由于在PYTHONPATH中存在"/opt/ros/kinetic/lib/python2.7/dist-packages"或者上述路徑位于"your_env/lib/python3.6/site_packages"之前(路徑越靠前,優(yōu)先級(jí)越高),則在包導(dǎo)入時(shí)試圖在優(yōu)先級(jí)高的路徑中尋找cv2.so文件钞澳,進(jìn)而導(dǎo)致出錯(cuò)赞季。
解決方法
- 刪除 “/opt/ros/kinetic/lib/python2.7/dist-packages”路徑所禀,同事注釋掉.bashrc中的“source /opt/ros/kinetic/setup.bash”劲室,因?yàn)檫@條語句會(huì)自動(dòng)在環(huán)境變量中添加“/opt/ros/kinetic/lib/python2.7/dist-packages”路徑
- 將"your_env/lib/python3.6/site_packages"路徑添加在 “/opt/ros/kinetic/lib/python2.7/dist-packages”之前
export PYTHONPATH=/home/gordon/python-virtual-environments/RL_2018HW/lib/python3.5/site-packages:$PYTHONPATH
- 在import cv2之前通過python語句刪除ros的路徑
import sys
sys.path.remove('/opt/ros/kinetic/lib/python2.7/dist-packages')
import cv2