2

调用另一个脚本时遇到问题,顺便说一下,当我调用 python main.py(然后调用 test3.py)时,它在控制台上运行良好,但是当我通过网络服务器执行此操作时,它给出了下面的错误,这是神秘的

我不能称它为(test3 只是打印...)

#proc = subprocess.Popen(['python', 'test3.py'], stdout=subprocess.PIPE)

但这很好用

proc = subprocess.Popen(['ls', '-la'], stdout=subprocess.PIPE)

FreeBSD 上 /var/log/httpd-error.log 中的错误日志

[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] Traceback (most recent call   last):
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]   File "/usr/local/www/apache22/data/main2.py", line 22, in <module>
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] proc = subprocess.Popen(['python', 'test3.py'], stdout=subprocess.PIPE)
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]   File "/usr/local/lib/python2.7/subprocess.py", line 679, in __init__
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] errread, errwrite)
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]   File "/usr/local/lib/python2.7/subprocess.py", line 1228, in _execute_child
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] raise child_exception
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] OSError
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] :
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] [Errno 2] No such file or directory
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61]
[Thu Mar 01 12:26:55 2012] [error] [client 64.102.194.61] File does not exist: /usr/local/www/apache22/data/favicon.ico
4

2 回答 2

2

python可执行文件不在网络服务器可执行文件 PATH中。网络服务器也可能使用chroot或类似技术进行保护,因此无法访问 python 安装。

尝试指定 python 可执行文件的完整路径(您可以使用命令以交互方式找到它which),如下所示:

proc = subprocess.Popen(['/usr/bin/python', 'test3.py'], stdout=subprocess.PIPE)
于 2012-03-01T17:39:16.670 回答
0
  1. 您可以直接将您的 test3 代码导入到项目中,而不是通过操作系统调用它吗?

  2. 你的相对路径都正确吗?听起来您可能正在从错误的目录运行某些东西,或者在远程计算机的目录中丢失了一些需要的文件。

于 2012-03-01T17:39:30.813 回答