编译安装的OpenCV无法被pip识别,项目运行失败求助
编译安装的OpenCV无法被pip识别的问题解决
问题情况
在CentOS系统的Conda环境orion中手动编译安装了OpenCV 3.4.11,完成make install后:
- 已通过
pkg-config确认安装成功 - Python解释器可正常导入
cv2并查看版本 - 但
pip无法识别该包,运行pip check提示mlprimitives 0.3.4依赖的opencv-python未安装 - 项目运行时抛出如下错误,尽管
cv2已存在于orion环境的site-packages目录中:
DistributionNotFound: 未找到应用所需的 'opencv-python<4.7,>=3.4.0.12' 包。
编译所用CMake命令:
cmake3 -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON -D PYTHON3_EXECUTABLE=/home/opc/.conda/envs/orion/bin/python \ -D PYTHON3_INCLUDE=/home/opc/.conda/envs/orion/include/python3.8 \ -D PYTHON3_LIBRARY=/home/opc/.conda/envs/orion/lib/libpython3.8.so \ -D PYTHON3_PACKAGES_PATH=/home/opc/.conda/envs/orion/lib/python3.8/site-packages \ -D PYTHON_EXECUTABLE=/home/opc/.conda/envs/orion/bin/python \ -D PYTHON_INCLUDE=/home/opc/.conda/envs/orion/include/python3.8 \ -D PYTHON_LIBRARY=/home/opc/.conda/envs/orion/lib/libpython3.8.so \ -D PYTHON_PACKAGES_PATH=/home/opc/.conda/envs/orion/lib/python3.8/site-packages \ -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF ..
解决方法
1. 手动生成pip可识别的包元数据
pip通过site-packages下的.dist-info目录识别包,手动编译的OpenCV缺少这些元数据,可手动创建:
- 进入环境的site-packages目录:
cd /home/opc/.conda/envs/orion/lib/python3.8/site-packages - 创建
opencv-python.dist-info目录:mkdir opencv-python.dist-info - 在该目录下创建
METADATA文件,写入以下内容(版本号对应3.4.11):Metadata-Version: 2.1 Name: opencv-python Version: 3.4.11 Summary: OpenCV Python绑定库 Home-page: https://opencv.org/ Author: OpenCV开发团队 License: BSD Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Science/Research Classifier: License :: OSI Approved :: BSD License Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Topic :: Software Development Classifier: Topic :: Scientific/Engineering Classifier: Topic :: Scientific/Engineering :: Image Recognition - 再创建
INSTALLER文件,写入:manual
2. 替换为pip安装的官方包
如果不需要自定义编译的特性,直接用pip安装对应版本的预编译包,pip可正常识别:
- 激活orion环境后执行:
conda activate orion pip install opencv-python==3.4.11 - 如果需要OpenCV contrib模块,安装对应包:
pip install opencv-contrib-python==3.4.11
3. 修改项目依赖配置(临时方案)
若不想改动OpenCV安装,可修改项目的依赖文件(如requirements.txt),添加:
opencv-python @ file:///home/opc/.conda/envs/orion/lib/python3.8/site-packages/cv2
或者临时注释掉opencv-python的版本限制,但这可能带来兼容性风险,需谨慎使用。
内容的提问来源于stack exchange,提问作者Karnik Kanojia
相关产品推荐
相关产品推荐

