在Apache2的mod_wsgi下运行的py代码中能否使用subprocess.Popen?
我在使用subprocess.Popen的时候,遇到了在mod_wsgi下出现IOError的问题。下面这段代码在Python终端、Django的runserver和mod_python下都能正常运行。但是一旦放到mod_wsgi(版本2)下,就会失败,报错信息是:(2, '没有这样的文件或目录')。我尝试了很多不同的方法,包括使用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,看看这个问题是否会消失。我想知道有没有其他人也遇到过这个问题,并能给我一些建议。
1 个回答
0
这个错误信息的意思是 Popen
找不到 htmldoc
。你可以通过 os.environ['PATH']
来检查你的 $PATH
环境变量,确保 htmldoc
已经安装在其中一个路径下。
另外,你也可以使用绝对路径来调用 Popen
。比如,
subprocess.Popen(['/usr/bin/htmldoc', ...