OSError:[WinError 193]%1不是有效的Win32应用程序

问题描述 投票:27回答:5

我试图从python解释器中使用子进程调用python文件“hello.py”。但我无法解决此错误。 [Python 3.4.1]。

import subprocess    
subprocess.call(['hello.py', 'htmlfilename.htm'])
Traceback (most recent call last):
  File "<pyshell#42>", line 1, in <module>
    subprocess.call(['hello.py', 'htmlfilename.htm'])
  File "C:\Python34\lib\subprocess.py", line 537, in call
    with Popen(*popenargs, **kwargs) as p:
  File "C:\Python34\lib\subprocess.py", line 858, in __init__
    restore_signals, start_new_session)
  File "C:\Python34\lib\subprocess.py", line 1111, in _execute_child
    startupinfo)
OSError: [WinError 193] %1 is not a valid Win32 application

除了使用子进程之外,还有“使用参数调用python脚本”的替代方法吗?提前致谢。

python subprocess python-3.4
5个回答
24
投票

错误很清楚。文件hello.py不是可执行文件。您需要指定可执行文件:

subprocess.call(['python.exe', 'hello.py', 'htmlfilename.htm'])

您需要在搜索路径上显示python.exe,或者您可以将完整路径传递给运行调用脚本的可执行文件:

import sys
subprocess.call([sys.executable, 'hello.py', 'htmlfilename.htm'])

7
投票

Python安装程序通常会在系统中注册.py文件。如果你明确地运行shell,它可以工作:

import subprocess
subprocess.call(['hello.py', 'htmlfilename.htm'], shell=True)
# --- or ----
subprocess.call('hello.py htmlfilename.htm', shell=True)

您可以在命令行上检查文件关联

C:\>assoc .py
.py=Python.File

C:\>ftype Python.File
Python.File="C:\Python27\python.exe" "%1" %*

1
投票

当我忘记在shell=True中使用subprocess.call时,我得到了同样的错误。

subprocess.call('python modify_depth_images.py', shell=True)

Running External Command

要运行外部命令而不与它交互,例如使用os.system(),请使用call()函数。

导入子流程

Simple command subprocess.call(['ls', '-1'], shell=True)


0
投票

OSError:[WinError 193]%1不是有效的Win32应用程序

此错误很可能是由于此行导入子流程造成的

我有同样的问题,并通过卸载和重新安装python和anaconda解决了它然后我使用jupyter并写了pip install numpy这给了我整个路径,它从我删除我的site-packages文件夹然后我的网站包错误消失了。实际上因为我有2个文件夹用于站点包,其中一个用anaconda,其他用于app数据(其中有一些问题),因为我删除了那个site-package文件夹然后它自动开始从site-package文件夹中获取我的库与anaconda因此问题解决了。


-1
投票

我也遇到过这个错误。然后我通过这个链接安装Visual Studio 2015 Redistribution package。问题解决了:)。在进行进一步修改之前尝试一下。

© www.soinside.com 2019 - 2024. All rights reserved.