gpt4 book ai didi

python - 从 python 运行时出现 wkhtmltopdf 段错误

转载 作者:行者123 更新时间:2023-11-28 18:40:06 25 4
gpt4 key购买 nike

我必须使用 subprocess.call(...) 从 python 运行 wkhtmltopdf。从命令行,我可以毫无问题地生成 pdf,但是当它从 python 运行时,它会因段错误而失败。

我不知道是什么导致 wkhtmltopdf 出现段错误。

我什至尝试发送我的终端 env 属性,但它仍然会出现段错误。我发送了 stderr、stdin、stdout,但没有任何效果。让我担心的是它是从终端而不是 python 运行的。

此外,在 python 中从不同的进程调用进程也会导致段错误。例如,我在两者之间添加了一个脚本来调用这个应用程序,用 python 编写的脚本也从 wkhtmltopdf 接收到一个段错误。

#!/bin/env python
import subprocess
import sys
import pdb
import os


sys.argv[0] = "/usr/local/bin/wkhtmltopdf.b"

sys.argv.remove('--quiet')

status = subprocess.call(sys.argv,
env=env,
stdin=sys.stdin,
stdout=open("/tmp/stdout.w", "w"),
stderr=open("/tmp/stderr.w", "w"))

cmd = " ".join(sys.argv)

pdb.set_trace()

现在我这样做是为了让我有时间在外部终端中执行命令。 OpenErp 正在检查 pdf 文件的内容。 wkhtmltopdf.b 是原始的二进制文件。我删除了 quiet 参数,因为我想看看发生了什么。

此时显然是段错误:

Loading pages (1/6)
[======> ] 10%

没有别的了

我的 wkhtmltopdf amd64 静态版本来自网站 wkhtmltopdf.org

$ wkhtmltopdf -V
wkhtmltopdf 0.12.1 (with patched qt)

我在我的 gentoo 机器上运行 ubuntu amd64 二进制包之一。在 gentoo 上使用打补丁的 qt 编译 wkhtmltopdf 有点困难/漫长,默认情况下似乎不支持它。然而,由于它是从命令行运行的,所以它也应该从 python 运行。

我正在从 zsh 运行它,但即使在我的 python 程序中,我也会这样调用:

'/bin/sh -c "%s"' % command

它也会出现段错误。

最佳答案

我遇到了与您完全相同的问题,但运行的是不同的堆栈(Apache 和 PHP),但我不是 100% 确定您实际上是如何启动 python 的。无论如何,它在与您的位置完全相同的地方崩溃,并且在命令行下运行良好,所以我想它可能值得分享以防万一对任何人有帮助;)

我发现我的问题是通过 apache 和 shell 运行时 ulimit 设置不同。特别是我的“虚拟内存” ulimit -v 非常低。我最终做了 $cmd = "ulimit -v 1073741824; {$this->wkhtmltopdf_path}...."这解决了我的问题! (您可以通过运行 ulimit -a 检查并比较 shell 上同一命令的值!)

关于python - 从 python 运行时出现 wkhtmltopdf 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27311874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com