Flask应用部署Ubuntu VPS后用pdfkit生成PDF遇wkhtmltopdf错误
解决Flask部署到Ubuntu VPS后pdfkit抛出wkhtmltopdf OSError的问题
这个问题我碰到过好多次了——本地跑的好好的,一部署到Ubuntu服务器就报错,本质原因就是你的VPS服务器上没有安装pdfkit依赖的wkhtmltopdf工具,或者pdfkit没法自动定位到它的可执行文件路径。下面是一步步的解决办法:
1. 先在Ubuntu服务器上安装wkhtmltopdf
直接通过apt包管理器安装即可,打开服务器终端执行:
sudo apt update && sudo apt install wkhtmltopdf
安装完成后,先验证是否安装成功,执行:
wkhtmltopdf --version
如果能输出类似wkhtmltopdf 0.12.6 (with patched qt)这样的版本信息,说明安装没问题。
2. 给pdfkit指定wkhtmltopdf的绝对路径(可选但推荐)
有时候即使安装了工具,pdfkit可能因为系统环境变量或虚拟环境的原因找不到可执行文件,这时候你可以在Flask代码里手动指定路径:
import pdfkit # Ubuntu上默认安装路径是/usr/bin/wkhtmltopdf,直接配置进去 config = pdfkit.configuration(wkhtmltopdf='/usr/bin/wkhtmltopdf') # 生成PDF时传入这个配置 # 示例1:生成PDF内容返回 pdf_content = pdfkit.from_string("<h1>Hello from Flask!</h1>", False, configuration=config) # 示例2:保存PDF到文件 pdfkit.from_string("<h1>Hello from Flask!</h1>", "output.pdf", configuration=config)
3. 检查运行权限(极少情况需要)
如果还是报错,确认一下运行gunicorn的用户有没有访问wkhtmltopdf的权限——不过apt安装的工具默认是全局可执行的,这个问题很少出现。
按照上面的步骤操作,应该就能解决那个OSError: [Errno 2] No such file or directory的问题了。
内容的提问来源于stack exchange,提问作者swordfish
相关产品推荐
相关产品推荐

