繁体   English   中英

Python子进程无法找到程序

[英]Python subprocess cannot find programs

我试图从python脚本调用java应用程序。 安装Java时,会在c:\\windows\\system32文件夹中添加一个java.exe程序,该文件夹包含在PATH环境变量中。

运行

import subprocess
import os
subprocess.call("java") //or "c:/windows/system32/java.exe"

结果是

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "c:\Program Files (x86)\Quantum GIS Lisboa\apps\Python27\Lib\subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "c:\Program Files (x86)\Quantum GIS Lisboa\apps\Python27\Lib\subprocess.py", line 679, in __init__
    errread, errwrite)
  File "c:\Program Files (x86)\Quantum GIS Lisboa\apps\Python27\Lib\subprocess.py", line 893, in _execute_child
    startupinfo)
WindowsError: [Error 2] Het systeem kan het opgegeven bestand niet vinden

进一步调查,我尝试使用相同的方式运行控制台( cmd )。 在该控制台中执行dir c:\\windows\\system32时,未列出java.exe 实际上,与从“普通”控制台运行相同命令相比,未列出一大堆文件。

我不知道可能导致这种情况的原因,因为完全相同的工作流程可以在另一台计算机上运行。 我知道我可以通过直接调用java安装而不是system32文件夹中的可执行文件来规避问题,但我想找到这个问题的根源。

这个问题发生在Quantum Gis插件中。 Quantum Gis使用包含的python安装,所以我没有自己安装python。 列出的python版本是Win32上的“2.7.2(默认,2011年6月12日,15:08:59)[MSC v.1500 32位(英特尔)]”。 我正在运行Windows 7 Professional。

不, subprocess.call("java") 永远不会导致抛出NameError

你正在运行没有引号而是:

>>> import subprocess
>>> subprocess.call(java)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'java' is not defined

一个NameError异常是Python告诉你代码中没有定义全局名称java ,而不是在你的机器上找不到命令java

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM