0

我有 2 个模块 test1.py 和 test2.py,它们都位于 c:/python27 下,从 test1.py,我试图调用 test.py,如下所示,但出现错误。

测试1.py

import subprocess
print 'Im in module-1'

subprocess.Popen('c:/python27/test2.py')

测试2.py

print 'Im in module-2'

错误:-

C:\Python27>python test1.py
Im in module-1
Traceback (most recent call last):
  File "test1.py", line 4, in <module>
    subprocess.Popen('c:/python27/test2.py')
  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 193] %1 is not a valid Win32 application
4

3 回答 3

2

如果设置了环境变量,请尝试以下操作:

import subprocess
print 'Im in module-1'
subprocess.Popen(['python','c:/python27/test2.py'])

如果未设置环境变量,则使用sys.executable

import sys
subprocess.Popen([sys.executable,'c:/python27/test2.py'])

如果要检查输出,请使用subprocess.check_output

print subprocess.check_output(['python','c:/python27/test2.py'])
于 2013-06-27T16:57:45.390 回答
1

我认为这里的问题是subprocess启动了一个全新的子shell,它可能会与您习惯使用的shell有很大不同。不确定它在windows上是如何工作的,但例如在unix中,子进程将/bin/sh默认使用,即具有较少功能的更简单的外壳。我猜subprocess你的 Windows 机器上使用的默认 shell 不知道如何处理.py. 最好像其他人提到的那样明确指定解释器。

这对您来说可能是一个很好的解决方案:https ://stackoverflow.com/a/912847/1583239

于 2013-06-27T17:02:22.730 回答
-2

请注意,python 脚本必须使用 python 命令运行。

c:>python 'c:/python27/test2.py' 

Window 不知道如何运行 .py 文件。

于 2013-06-27T16:53:36.847 回答