Reputation: 885
I'm trying to install development version of CVAT according to official instruction but struggling at the step of requirements.txt applying:
pip install -r cvat/requirements/development.txt
... with following error:
Skipping wheel build for av, due to binaries being disabled for it.
Skipping wheel build for datumaro, due to binaries being disabled for it.
Installing collected packages: wrapt, tf-estimator-nightly, termcolor, tensorboard-plugin-wit, Shapely, rules, rope, rjsmin, rcssmin, pytz, pyasn1, patool, mistune, mccabe, libclang, keras, itypes, flatbuffers, entrypoint2, EasyProcess, dj-pagination, diskcache, av, addict, Werkzeug, urllib3, uritemplate, typing-extensions, tqdm, tornado, toml, threadpoolctl, tensorflow-io-gcs-filesystem, tensorboard-data-server, sqlparse, smmap, six, ruamel.yaml.clib, rsa, redis, PyYAML, pyunpack, pyrsistent, pyparsing, pylogbeat, pyjwt, Pygments, pycparser, pyasn1-modules, protobuf, Pillow, oauthlib, numpy, networkx, natsort, MarkupSafe, Markdown, lxml, lazy-object-proxy, kiwisolver, joblib, jmespath, isort, inflection, idna, google-crc32c, gast, fonttools, dnspython, django-extensions, deprecated, defusedxml, cycler, click, charset-normalizer, certifi, cachetools, attrs, asgiref, absl-py, tensorboardX, snakeviz, scipy, ruamel.yaml, rq, requests, python3-openid, python-ldap, python-dateutil, pdf2image, packaging, orderedmultidict, opt-einsum, opencv-python-headless, opencv-python, keras-preprocessing, jsonschema, jinja2, isodate, h5py, grpcio, googleapis-common-protos, google-resumable-media, google-pasta, google-auth, gitdb, Django, cffi, astunparse, astroid, scikit-learn, requests-oauthlib, pylint, pandas, matplotlib, limits, google-api-core, GitPython, furl, djangorestframework, django-sendfile2, django-rq, django-filter, django-cors-headers, django-auth-ldap, django-appconf, cryptography, croniter, coreschema, botocore, azure-core, s3transfer, rq-scheduler, python-logstash-async, pylint-plugin-utils, pycocotools, open3d, msrest, google-cloud-core, google-auth-oauthlib, drf-spectacular, django-rest-auth, django-compressor, coreapi, tensorboard, pylint-django, google-cloud-storage, django-allauth, datumaro, boto3, azure-storage-blob, tensorflow
Running setup.py install for av ... error
error: subprocess-exited-with-error
× Running setup.py install for av did not run successfully.
│ exit code: 1
╰─> [50 lines of output]
running install
/Users/dd/cvat/.env/lib/python3.9/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
warnings.warn(
running build
running build_py
creating build
creating build/lib.macosx-12.4-x86_64-cpython-39
creating build/lib.macosx-12.4-x86_64-cpython-39/av
copying av/deprecation.py -> build/lib.macosx-12.4-x86_64-cpython-39/av
copying av/datasets.py -> build/lib.macosx-12.4-x86_64-cpython-39/av
copying av/__init__.py -> build/lib.macosx-12.4-x86_64-cpython-39/av
copying av/__main__.py -> build/lib.macosx-12.4-x86_64-cpython-39/av
creating build/lib.macosx-12.4-x86_64-cpython-39/av/video
copying av/video/__init__.py -> build/lib.macosx-12.4-x86_64-cpython-39/av/video
creating build/lib.macosx-12.4-x86_64-cpython-39/av/codec
copying av/codec/__init__.py -> build/lib.macosx-12.4-x86_64-cpython-39/av/codec
creating build/lib.macosx-12.4-x86_64-cpython-39/av/container
copying av/container/__init__.py -> build/lib.macosx-12.4-x86_64-cpython-39/av/container
creating build/lib.macosx-12.4-x86_64-cpython-39/av/audio
copying av/audio/__init__.py -> build/lib.macosx-12.4-x86_64-cpython-39/av/audio
creating build/lib.macosx-12.4-x86_64-cpython-39/av/subtitles
copying av/subtitles/__init__.py -> build/lib.macosx-12.4-x86_64-cpython-39/av/subtitles
creating build/lib.macosx-12.4-x86_64-cpython-39/av/filter
copying av/filter/__init__.py -> build/lib.macosx-12.4-x86_64-cpython-39/av/filter
creating build/lib.macosx-12.4-x86_64-cpython-39/av/sidedata
copying av/sidedata/__init__.py -> build/lib.macosx-12.4-x86_64-cpython-39/av/sidedata
creating build/lib.macosx-12.4-x86_64-cpython-39/av/data
copying av/data/__init__.py -> build/lib.macosx-12.4-x86_64-cpython-39/av/data
running build_ext
running config
PyAV: 8.0.2 (unknown commit)
Python: 3.9.10 (main, Jun 28 2022, 17:49:16) \n[Clang 13.1.6 (clang-1316.0.21.2.5)]
platform: macOS-12.4-x86_64-i386-64bit
extension_extra:
include_dirs: [b'include']
libraries: []
library_dirs: []
define_macros: []
runtime_library_dirs: []
config_macros:
PYAV_COMMIT_STR="unknown-commit"
PYAV_VERSION=8.0.2
PYAV_VERSION_STR="8.0.2"
Could not find libavformat with pkg-config.
Could not find libavcodec with pkg-config.
Could not find libavdevice with pkg-config.
Could not find libavutil with pkg-config.
Could not find libavfilter with pkg-config.
Could not find libswscale with pkg-config.
Could not find libswresample with pkg-config.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure
× Encountered error while trying to install package.
╰─> av
I have already tried suggested fixes, but no luck: https://github.com/openvinotoolkit/cvat/issues/4406
Environment:
What other options could be applied to fix it?
Upvotes: 0
Views: 616
Reputation: 101
Facing this same problem just last week. I would say the problem is that you are trying to install PyAv without the proper dynamic libraries from FFMPEG. PyAv is just a bunch of Python bindings to connect with binary dynamic libraries in the system. I'm also assuming you are probably on Ubuntu 18.04. The newest FFMPEG version on the standard repository is no good, it's 3.x.
You need either have to compile some FFMPEG version equal or above 4.0. To do that, you need to compile FFMPEG from the source, compile and install it with make and make install. Or you can add a repository with the binaries you want. I compiled it myself, and it generated all the libaries I needed, so that's what I describe here.
First run ffmpeg
on the terminal to make sure you have a FFMPEG version below 4.0. And if that's the case, run the following commands. They will download the source code, extract it, compile it and install the files. After that, the Python bindings of PyAv should find the correct libraries and the installation will be able to proceed.
Make sure you have the dependences:
sudo apt install yasm libvpx. libx264. cmake libavdevice-dev libavfilter-dev libopus-dev libvpx-dev pkg-config libsrtp2-dev libpython3-dev python3-numpy
Then download the sources:
curl https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/ffmpeg/7:4.2.4-1ubuntu0.1/ffmpeg_4.2.4.orig.tar.xz --output ffmpeg_4.2.4
Extract the file:
tar -xf ffmpeg_4.2.4.orig.tar.xz
Enter the directory:
cd ffmpeg-4.2.4/
And compile and install the files:
./configure --disable-static --enable-shared --disable-doc
make
sudo make install
sudo ldconfig
It should now compile and install the dynamic libraries for FFMPEG 4.2.4. Once it finishes, open a NEW terminal, and type ffmpeg
to verify that a new 4.x version is now avaliable. Then try to install CVAT again, it should work now.
Upvotes: 0