我试图从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脚本”的替代方法吗?提前致谢。
错误很清楚。文件hello.py
不是可执行文件。您需要指定可执行文件:
subprocess.call(['python.exe', 'hello.py', 'htmlfilename.htm'])
您需要在搜索路径上显示python.exe
,或者您可以将完整路径传递给运行调用脚本的可执行文件:
import sys
subprocess.call([sys.executable, 'hello.py', 'htmlfilename.htm'])
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" %*
当我忘记在shell=True
中使用subprocess.call
时,我得到了同样的错误。
subprocess.call('python modify_depth_images.py', shell=True)
要运行外部命令而不与它交互,例如使用os.system(),请使用call()函数。
导入子流程
Simple command subprocess.call(['ls', '-1'], shell=True)
OSError:[WinError 193]%1不是有效的Win32应用程序
此错误很可能是由于此行导入子流程造成的
我有同样的问题,并通过卸载和重新安装python和anaconda解决了它然后我使用jupyter并写了pip install numpy这给了我整个路径,它从我删除我的site-packages文件夹然后我的网站包错误消失了。实际上因为我有2个文件夹用于站点包,其中一个用anaconda,其他用于app数据(其中有一些问题),因为我删除了那个site-package文件夹然后它自动开始从site-package文件夹中获取我的库与anaconda因此问题解决了。
我也遇到过这个错误。然后我通过这个链接安装Visual Studio 2015 Redistribution package。问题解决了:)。在进行进一步修改之前尝试一下。