自行编译opencv-python生成wheel时缺失opencv_python.libs文件夹如何解决
解决方案
你编译生成的wheel没有opencv_python.libs目录是正常现象:官方发布的预编译opencv-python wheel中的该目录是由auditwheel工具生成的,作用是归集所有依赖的第三方动态库(含你自行编译的ffmpeg、Qt等)并修正链接路径,保证wheel可以在不同linux环境下直接运行。直接执行pip wheel生成的是未经过兼容性处理的原生wheel,不会自动生成该目录。
操作步骤
- 先安装auditwheel工具:
pip install auditwheel - 编译opencv-python前,先配置环境变量指向你自行编译的ffmpeg路径,保证编译阶段可以正确识别链接:
假设你的ffmpeg安装在/opt/custom_ffmpeg目录,执行以下命令:# 让pkg-config可以找到ffmpeg的配置 export PKG_CONFIG_PATH=/opt/custom_ffmpeg/lib/pkgconfig:$PKG_CONFIG_PATH # 让编译阶段可以找到ffmpeg的动态库 export LD_LIBRARY_PATH=/opt/custom_ffmpeg/lib:$LD_LIBRARY_PATH - 按照你原来的流程生成原始wheel文件:
pip wheel . --verbose - 用auditwheel处理生成的原始wheel,自动打包所有依赖到
opencv_python.libs目录:
把命令中的wheel文件名替换为你实际生成的文件名:
处理完成后的wheel会输出到当前目录下的auditwheel repair opencv_python-4.4.0.46-cp38-cp38-linux_x86_64.whl -w ./fixed_wheelfixed_wheel文件夹中,解压后即可看到opencv_python.libs目录,所有依赖的动态库都会被归集到该目录下。
注意事项
- 如果auditwheel执行repair时遗漏了部分依赖的动态库,把对应动态库的所在路径加入
LD_LIBRARY_PATH后重新执行repair命令即可。
内容的提问来源于stack exchange,提问作者Harry Boy
相关产品推荐
相关产品推荐

