PyAV安装失败:无法构建av wheels及编译错误求助
PyAV 安装失败问题
尝试了以下两种命令安装PyAV均失败:
pip install avpip install av --no-binary av
此前已按照官方文档推荐安装了所有系统依赖:
# 通用依赖 sudo apt-get install -y python-dev pkg-config # 库组件 sudo apt-get install -y \ libavformat-dev libavcodec-dev libavdevice-dev \ libavutil-dev libswscale-dev libswresample-dev libavfilter-dev
首次安装遇到的错误:
... 4-3.6/av/video copying av/video/format.pxd -> build/lib.linux-x86_64-3.6/av/video copying av/data/__init__.pxd -> build/lib.linux-x86_64-3.6/av/data copying av/data/stream.pxd -> build/lib.linux-x86_64-3.6/av/data copying av/sidedata/sidedata.pxd -> build/lib.linux-x86_64-3.6/av/sidedata copying av/sidedata/__init__.pxd -> build/lib.linux-x86_64-3.6/av/sidedata copying av/sidedata/motionvectors.pxd -> build/lib.linux-x86_64-3.6/av/sidedata copying av/audio/codeccontext.pxd -> build/lib.linux-x86_64-3.6/av/audio copying av/audio/plane.pxd -> build/lib.linux-x86_64-3.6/av/audio copying av/audio/__init__.pxd -> build/lib.linux-x86_64-3.6/av/audio copying av/audio/frame.pxd -> build/lib.linux-x86_64-3.6/av/audio copying av/audio/fifo.pxd -> build/lib.linux-x86_64-3.6/av/audio copying av/audio/resampler.pxd -> build/lib.linux-x86_64-3.6/av/audio copying av/audio/stream.pxd -> build/lib.linux-x86_64-3.6/av/audio copying av/audio/layout.pxd -> build/lib.linux-x86_64-3.6/av/audio copying av/audio/format.pxd -> build/lib.linux-x86_64-3.6/av/audio copying av/subtitles/codeccontext.pxd -> build/lib.linux-x86_64-3.6/av/subtitles copying av/subtitles/subtitle.pxd -> build/lib.linux-x86_64-3.6/av/subtitles copying av/subtitles/__init__.pxd -> build/lib.linux-x86_64-3.6/av/subtitles copying av/subtitles/stream.pxd -> build/lib.linux-x86_64-3.6/av/subtitles running build_ext building 'av.error' extension creating build/temp.linux-x86_64-3.6 creating build/temp.linux-x86_64-3.6/src creating build/temp.linux-x86_64-3.6/src/av x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/x86_64-linux-gnu -I/datadrive/mikel/venvs/scs/include -I/usr/include/python3.6m -c src/av/error.c -o build/temp.linux-x86_64-3.6/src/av/error.o src/av/error.c:54:10: fatal error: Python.h: No such file or directory #include "Python.h" ^~~~~~~~~~ compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 ---------------------------------------- ERROR: Failed building wheel for av Failed to build av ERROR: Could not build wheels for av, which is required to install pyproject.toml-based projects
怀疑缺少某些系统依赖,但无法确定具体是哪些。
编辑1
执行以下命令安装Python3开发依赖后:
sudo apt-get install -y python3-dev
出现新的编译错误:
building 'av.codec.codec' extension creating build/temp.linux-x86_64-3.6/src/av/codec x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/x86_64-linux-gnu -I/datadrive/mikel/venvs/scs/include -I/usr/include/python3.6m -c src/av/codec/codec.c -o build/temp.linux-x86_64-3.6/src/av/codec/codec.o src/av/codec/codec.c: In function ‘__pyx_f_2av_5codec_5codec_get_codec_names’: src/av/codec/codec.c:4114:19: warning: implicit declaration of function ‘av_codec_iterate’; did you mean ‘av_codec_next’? [-Wimplicit-function-declaration] __pyx_v_ptr = av_codec_iterate((&__pyx_v_opaque)); ^~~~~~~~~~~~~~~~ av_codec_next src/av/codec/codec.c:4114:17: warning: assignment makes pointer from integer without a cast [-Wint-conversion] __pyx_v_ptr = av_codec_iterate((&__pyx_v_opaque)); ^ src/av/codec/codec.c: In function ‘__pyx_pymod_exec_codec’: src/av/codec/codec.c:6226:36: error: ‘AV_CODEC_CAP_HARDWARE’ undeclared (first use in this function); did you mean ‘AV_CODEC_CAP_DR1’? __pyx_t_7 = __Pyx_PyInt_From_int(AV_CODEC_CAP_HARDWARE); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 121, __pyx_L1_error) ^~~~~~~~~~~~~~~~~~~~~ AV_CODEC_CAP_DR1 src/av/codec/codec.c:6226:36: note: each undeclared identifier is reported only once for each function it appears in src/av/codec/codec.c:6247:36: error: ‘AV_CODEC_CAP_HYBRID’ undeclared (first use in this function); did you mean ‘AV_CODEC_CAP_DR1’? __pyx_t_7 = __Pyx_PyInt_From_int(AV_CODEC_CAP_HYBRID); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 121, __pyx_L1_error) ^~~~~~~~~~~~~~~~~~~ AV_CODEC_CAP_DR1 error: command 'x86_64-linux-gnu-gcc' failed with exit status 1 ---------------------------------------- ERROR: Failed building wheel for av Failed to build av ERROR: Could not build wheels for av, which is required to install pyproject.toml-based projects
内容的提问来源于stack exchange,提问作者Mike B
相关产品推荐
相关产品推荐

