我试图从python脚本调用java应用程序。安装Java时,java.exe
文件夹中添加了c:\windows\system32
程序,此文件夹包含在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
!实际上,与从&#34; normal&#34;运行相同命令相比,未列出一大堆文件。控制台。
我不知道可能导致这种情况的原因,因为完全相同的工作流程可以在另一台计算机上运行。我知道我可以通过直接调用java安装而不是system32文件夹中的可执行文件来解决问题,但是我想找到这个问题的根源。
Quantum Gis插件中出现此问题。 Quantum Gis使用包含的python安装,所以我没有自己安装python。列出的python版本是Win32&#34;的#32; 2.7.2(默认,2011年6月12日,15:08:59)[MSC v.1500 32位(Intel)]。我正在运行Windows 7 Professional。
答案 0 :(得分:4)
不,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
你的机器。