我正在使用 subprocess.Popen 并在 mod_wsgi 下运行时出现 IOErrors。以下代码将在 python 术语或 django runserver 和 mod_python 下工作。如果将它放在 mod_wsgi (v2) 下,它会失败:(2, 'No such file or directory') 我已经尝试了很多涉及使用 subprocess.PIPE 的变体。我试图重新定义 stdout,并使用 httpd 指令来关闭 mod_wsgi 对 stdout 使用的提示。我最近尝试升级到版本 3。
import subprocess
input_file = 'test.html'
p = subprocess.Popen(['htmldoc','-f', 'output.pdf', '--book', input_file])
p.communicate()
len(open('output.pdf').read())
我的测试工作是回到 mod_python,看看问题是否消失。我想知道是否有其他人这样做过并且可以阐明这个问题。
请您参考如下方法:
该错误消息表示 Popen 找不到 htmldoc。通过 os.environ['PATH'] 检查您的 $PATH 环境变量,并确保 htmldoc 安装在其中一个路径中。
或者,您可以使用绝对路径调用 Popen。例如,
subprocess.Popen(['/usr/bin/htmldoc', ...
