Как добавить зависимости, которые не могут быть установлены с помощью pip, в мой проект (django) на Heroku?
Я сталкивался с несколькими похожими проблемами, и я не видел четкого ответа, поэтому я подумал, что лучше спросить здесь. Я работаю над проектом django, и один из пакетов, который он использует, требует PyMuPDF
, который, в свою очередь, требует swig
, который не может быть установлен с помощью pip/add в requirements.txt. Я пытаюсь развернуть этот проект на Heroku, и это приводит к неудаче.
Смотрите ошибку сборки от Heroku ниже.
PyMuPDF/setup.py: Finished building mupdf.
PyMuPDF/setup.py: library_dirs=['mupdf-1.20.0-source/build/release']
PyMuPDF/setup.py: libraries=['mupdf', 'mupdf-third', 'jbig2dec', 'openjp2', 'jpeg', 'freetype', 'gumbo', 'harfbuzz', 'png16', 'mujs']
PyMuPDF/setup.py: include_dirs=['mupdf-1.20.0-source/include', 'mupdf-1.20.0-source/include/mupdf', 'mupdf-1.20.0-source/thirdparty/freetype/include', '/usr/include/freetype2']
PyMuPDF/setup.py: extra_link_args=[]
running bdist_wheel
running build
running build_py
running build_ext
building 'fitz._fitz' extension
swigging fitz/fitz.i to fitz/fitz_wrap.c
swig -python -o fitz/fitz_wrap.c fitz/fitz.i
error: command 'swig' failed: No such file or directory
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for PyMuPDF
Running setup.py clean for PyMuPDF
Successfully built docopt fire langdetect mplcursors
Failed to build PyMuPDF
ERROR: Could not build wheels for PyMuPDF, which is required to install pyproject.toml-based projects
! Push rejected, failed to compile Python app.
! Push failed
У меня была похожая ситуация, когда пакет требовал libffi
и cairo
, которые можно установить только через brew. (Я отказался от этого пакета, так как он также требовал tensor, который слишком большой для Heroku.
Как я могу решить эту ситуацию? Есть ли способ решить эту проблему и получить эти зависимости на Heroku? Я пытался использовать buildpack (я не слишком хорошо знаком с ним), но это не сработало.
Или есть ли альтернатива Heroku, которую я могу использовать для этого? (Я немного знаком с Docker, но никогда не разворачивал ни одного проекта с помощью Docker)