Установка библиотеки pdftotext на героку

Библиотека pdftotext является требованием в файле requirements.txt. При попытке нажать на героку я получаю следующую ошибку:

remote:          Running setup.py install for pdftotext: started
remote:            Running setup.py install for pdftotext: finished with status 'error'
remote:            Complete output from command /app/.heroku/python/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-rnbekz45/pdftotext/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-o0if2tl3-record/install-record.txt --single-version-externally-managed --compile:
remote:            /app/.heroku/python/lib/python3.6/distutils/dist.py:261: UserWarning: Unknown distribution option: 'long_description_content_type'
remote:              warnings.warn(msg)
remote:            running install
remote:            running build
remote:            running build_ext
remote:            building 'pdftotext' extension
remote:            creating build
remote:            creating build/temp.linux-x86_64-3.6
remote:            gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPOPPLER_CPP_AT_LEAST_0_30_0=0 -I/app/.heroku/python/include/python3.6m -c pdftotext.cpp -o build/temp.linux-x86_64-3.6/pdftotext.o -Wall
remote:            pdftotext.cpp:3:10: fatal error: poppler/cpp/poppler-document.h: No such file or directory
remote:             #include <poppler/cpp/poppler-document.h>
remote:                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
remote:            compilation terminated.
remote:            error: command 'gcc' failed with exit status 1
remote:            
remote:            ----------------------------------------
remote:        Command "/app/.heroku/python/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-rnbekz45/pdftotext/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-o0if2tl3-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-rnbekz45/pdftotext/
remote:  !     Push rejected, failed to compile Python app.
remote: 
remote:  !     Push failed

Обычно я решаю эту проблему, устанавливая libpoppler-cpp-dev с apt. Но на героку у меня нет root-доступа для этого. Есть ли решение для этого?

Я понимаю, что, строго говоря, это не вопрос программирования. Но мне это нужно для развертывания моей программы, поэтому я надеюсь, что пуристы простят меня.


person Joel G Mathew    schedule 23.01.2019    source источник


Ответы (1)


От Как мне установить дополнительные программные пакеты, необходимые моему приложению?:

Мы не предлагаем официальную поддержку установки дополнительных пакетов, но есть несколько неподдерживаемых вариантов.

Одним из них является экспериментальный heroku-apt-buildpack. Вы можете использовать это, включив любой пакет APT в Aptfile вашего приложения. Сборочный пакет затем установит эти пакеты на динамометрическом стенде при развертывании приложения.

Итак, для этого сначала добавьте пакет сборки:

heroku buildpacks:add --index 1 heroku-community/apt

Затем создайте Aptfile в исходном каталоге со следующим содержимым:

libpoppler-cpp-dev

И разверните, как обычно. Дайте мне знать, если это поможет!

person grooveplex    schedule 23.01.2019