在Heroku上安装pdftotext库

时间:2019-01-23 12:12:22

标签: python heroku pdftotext

pdftotext库是requirements.txt中的要求。尝试推送到heroku时,出现以下错误:

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-devapt安装来解决此问题。但是在heroku上,我没有root访问权限。有解决方案吗?

我意识到严格来说,这不是编程问题。但是我需要这个来部署我的程序,所以我希望这里的纯粹主义者能原谅我。

1 个答案:

答案 0 :(得分:2)

来自How do I install additional software packages that my application requires?

  

我们不提供安装额外软件包的官方支持,但有两个不受支持的选项。

     

一个是实验性的heroku-apt-buildpack。您可以通过在应用程序的Aptfile中包含任何APT软件包来使用它。然后,在部署应用程序时,buildpack会将这些软件包安装在dyno上。

因此,要执行此操作,请首先添加构建包:

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

然后,在源目录中创建一个包含以下内容的Aptfile

libpoppler-cpp-dev

并像往常一样部署。让我知道是否有帮助!