将Java从1.6升级到1.7 x64(在Windows 7上)后,我突然无法通过Python 2.7的subprocess
模块启动java.exe。以前只是下面的脚本工作:为什么Python不能通过子进程执行java.exe?
import subprocess
subprocess.check_call([r"C:\Windows\system32\java.exe"])
现在它不能是这样的:
Traceback (most recent call last):
File ".\tst.py", line 2, in <module>
subprocess.check_call([r"C:\Windows\system32\java.exe"])
File "C:\Python27\lib\subprocess.py", line 506, in check_call
retcode = call(*popenargs, **kwargs)
File "C:\Python27\lib\subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "C:\Python27\lib\subprocess.py", line 679, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 896, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
我也已经证实,C:\Windows\system32\java.exe
确实存在,是一个应用程序,并可以在命令行中执行。
这里出了什么问题?
编辑: 我发现我可以从Python的开始C:\Program Files\Java\jre7\bin\java.exe
,所以C:\Windows\system32\java.exe
必须有一些怪异的伪快捷方式虽然在技术上一个Windows应用程序。 1.7版肯定会把它搞乱,因为我刚刚确认版本1.6没问题。
你确定这不是一个链接? – Marcin
@Marcin根据文件属性,文件类型是'Application(.exe)'。 – aknuds1
这很奇怪。 – Marcin