【发布时间】:2018-10-22 15:27:26
【问题描述】:
在我的 heroku python 应用程序(flask)上安装 wkhtmltopdf 二进制文件时遇到问题。
一年前(python 2)我已经遇到了一个问题,但我能够通过首先将wkhtmltopdf-pack 添加到需求并将其安装在heroku 上然后将配置变量设置为WKHTMLTOPDF_BINARY=wkhtmltopdf-pack 来解决它。这是我的老thread
现在的问题:
我正在尝试对 python 3 使用相同的方法,但没有任何版本的 wkhtmltopdf-pack 有效,每次推送都会被拒绝,我无法安装它。
我在需求中尝试了这些版本:
wkhtmltopdf-pack==0.12.5
wkhtmltopdf-pack==0.12.4
wkhtmltopdf-pack==0.12.3
wkhtmltopdf-pack==0.12.3.0.post1
wkhtmltopdf-pack==0.12.2.4
我收到以下错误:
No matching distribution
或
error: can't copy 'bin/wkhtmltopdf-pack': doesn't exist or not a regular file
我记得有一次它告诉我有一个SyntaxError,但它无法解码。
替代方法:
似乎也可以使用buildpack,所以我尝试添加一个buildpack:
heroku buildpacks:add https://github.com/dscout/wkhtmltopdf-buildpack.git
我看到已经添加了 buildpack,但是没有安装,也没有 wkhtmltopdf 的 config var。我不明白如何触发安装,在 buildpacks 的所有文档中都写着“添加 buildpack 就可以开始了”。
尝试创建 PDF 时出现服务器错误:
OSError: No wkhtmltopdf executable found: "b''"
编辑:
我设法安装了 buildpack:
推送成功,但没有创建配置变量,我不知道二进制文件的路径是什么。
编辑
我能够通过 heroku bash 找到文件:
app bin dev etc lib lib64 lost+found proc sbin sys tmp usr var
/ $ cd app
~ $ cd vendor
~/vendor $ dir
wkhtmltox
~/vendor $ cd wkhtmltox
~/vendor/wkhtmltox $ dir
lib
~/vendor/wkhtmltox $ cd lib
~/vendor/wkhtmltox/lib $ dir
libwkhtmltox.so libwkhtmltox.so.0 libwkhtmltox.so.0.12 libwkhtmltox.so.0.12.3
~/vendor/wkhtmltox/lib $ exit
现在我尝试了所有这些文件,但都给出了错误:
OSError: wkhtmltopdf exited with non-zero code -11. error
这是我设置路径的方式:
# WKHTMLTOPDF config
if 'DYNO' in os.environ:
print ('loading wkhtmltopdf path on heroku')
MYDIR = os.path.dirname(__file__)
WKHTMLTOPDF_CMD = os.path.join(MYDIR + "/vendor/wkhtmltox/lib/", "libwkhtmltox.so")
else:
print ('loading wkhtmltopdf path on localhost')
MYDIR = os.path.dirname(__file__)
WKHTMLTOPDF_CMD = os.path.join(MYDIR + "/static/executables/bin/", "wkhtmltopdf.exe")
【问题讨论】:
-
我会记住这一点,但我已经在 heroku 上工作了,实际上设置起来并不难。
-
你在 wkhtmltopdf 上出售吗? weasyprint 呢?
标签: python python-3.x heroku wkhtmltopdf