pythonherokupyav

Heroku fails to install av (pyav)


I have been trying to set up my Python web app that uses opencv, tensorflow and av modules but keeps failing. I have tried using the Aptfile to install several Ubuntu libraries (libsm6, libxrender1, etc.) and the install still fails.

After failing the install, the heroku server resolves to building the av module from source which fails as well, with gcc failing here:

src/av/codec/codec.c:4003: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:4003: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:6117: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:6117:36: note: each undeclared identifier is reported only once for each function it appears in
src/av/codec/codec.c:6138: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, 125, __pyx_L1_error)
                                    ^~~~~~~~~~~~~~~~~~~
                                    AV_CODEC_CAP_DR1
error: command 'gcc' failed with exit status 1

Has anyone experienced this? Or any experience with using av/pyav in Heroku? Please tell me anything that I missed. Thanks.


Solution

  • Turns out Heroku works better using requirements.txt than Pipfile. After changing the install file, the deployment process went fine.