我正在尝试调用python文件" hello.py"从带有子进程的python解释器中。但我无法解决此错误。 [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脚本&#34;除了使用子进程? 提前谢谢。
答案 0 :(得分:25)
错误很清楚。文件hello.py
不是可执行文件。您需要指定可执行文件:
subprocess.call(['python.exe', 'hello.py', 'htmlfilename.htm'])
您需要在搜索路径上显示python.exe
,或者您可以将完整路径传递给运行调用脚本的可执行文件:
import sys
subprocess.call([sys.executable, 'hello.py', 'htmlfilename.htm'])
答案 1 :(得分: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" %*
答案 2 :(得分:2)
以上所有解决方案都是合乎逻辑的,我认为这涵盖了根本原因,但是对我而言,以上所有方法均无效。因此,将其放在此处可能对其他人有帮助。
我的
environment
被搞砸了。从回溯中可以看到,这里涉及两个python环境:
C:\Users\example\AppData\Roaming\Python\Python37
C:\Users\example\Anaconda3
我清理了路径,只是删除了C:\Users\example\AppData\Roaming\Python\Python37
中的所有文件。
然后它就像魅力一样工作。
我希望其他人能对此有所帮助。
这个link帮助我找到了解决方案。
答案 3 :(得分:1)
我在shell=True
忘记使用subprocess.call
时收到同样的错误。
subprocess.call('python modify_depth_images.py', shell=True)
运行外部命令而不与其交互,例如一个 可以使用os.system(),使用call()函数。
导入子流程
简单命令subprocess.call(['ls',' - 1'],shell = True)
答案 4 :(得分:1)
当您要运行的任何应用程序都需要python 32位变体并且您具有64位变体时,就会出现问题
注意:安装python 32位变体后,请不要忘记使用此新python 32位变体的pip安装所有必需的软件包
答案 5 :(得分:0)
我也遇到了这个错误。 然后,我通过此链接安装Visual Studio 2015 Redistribution package。问题解决了:)。在进行进一步修改之前,请尝试一下。
答案 6 :(得分:0)
操作系统错误:[WinError 193]%1不是有效的Win32应用程序
此错误很可能是由于此行 import子进程
我遇到了同样的问题,并通过卸载并重新安装python和anaconda来解决了该问题,然后我使用了jupyter并写了 pip install numpy ,这为我提供了从中获取网站软件包的完整路径我删除了我的site-packages文件夹,然后错误消失了。实际上,因为我有2个用于站点包的文件夹,其中一个带有anaconda,而另一个位于应用程序数据中的某个位置(其中存在一些问题),因为我删除了该站点包文件夹,所以它自动开始从站点包文件夹中提取我的库使用Anaconda可以解决问题。
答案 7 :(得分:0)
从命令行/终端通过numpy
卸载pip
可以解决我的错误:
pip uninstall numpy
答案 8 :(得分:0)
然后只有Anaconda保留在我的PC中 所以打开Anaconda,然后一切对我来说都很好
答案 9 :(得分:0)
对于更新后在Windows上遇到此问题的人
发生的事情是Windows Defender进行了一些更改。可能导致运行数据提取脚本,但是该项目的python.exe减少为0kb。从另一个项目复制python.exe并将其替换目前已解决。
答案 10 :(得分:0)
我也面临着同样的问题,并且在解决该问题时也遵循以下步骤。
问候 Vj
答案 11 :(得分:0)
文件 hello.py 不是可执行文件。你需要指定一个像python.exe这样的文件
尝试以下操作:
import sys
subprocess.call([sys.executable, 'hello.py', 'htmlfilename.htm'])
答案 12 :(得分:0)
我的问题涉及 poetry
和 argparse
。
我用这样的参数调用脚本:
poetry run .\src\script.py --help
并得到同样的错误,所以当我将命令更改为:
poetry run python.exe .\src\script.py --help
然后一切正常。