Как добавить зависимости, которые не могут быть установлены с помощью 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)

Вернуться на верх