Python可以';使用subprocess.run在Windows中找不到ssh二进制文件,即使有ssh.exe的完整路径

Python可以';使用subprocess.run在Windows中找不到ssh二进制文件,即使有ssh.exe的完整路径,python,windows,openssh,Python,Windows,Openssh,当我在powershell中运行scp.exe时,它会显示用法。但是python告诉我们该文件不存在,使用os.path.isfile(“C:\\Windows\\System32\\OpenSSH\\scp.exe”)进行测试。我所有通过subprocess.run调用scp的脚本以前都正常工作。现在它的结果是: Traceback (most recent call last): File "<stdin>", line 1, in <module> File

当我在powershell中运行
scp.exe
时,它会显示用法。但是python告诉我们该文件不存在,使用
os.path.isfile(“C:\\Windows\\System32\\OpenSSH\\scp.exe”)
进行测试。我所有通过
subprocess.run
调用scp的脚本以前都正常工作。现在它的结果是:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Alyson\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", line 489, in run
    with Popen(*popenargs, **kwargs) as process:
  File "C:\Users\Alyson\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\Alyson\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", line 1307, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] O sistema não pode encontrar o arquivo especificado
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Users\Alyson\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py”,第489行,正在运行
使用Popen(*popenargs,**kwargs)作为流程:
文件“C:\Users\Alyson\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py”,第854行,在uu init中__
self.\u execute\u child(参数、可执行文件、预执行文件、关闭文件、,
文件“C:\Users\Alyson\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py”,第1307行,在执行子进程中
hp、ht、pid、tid=\u winapi.CreateProcess(可执行文件、参数、,
FileNotFoundError:[WinError 2]O系统管理系统
我最近做的唯一一件事就是安装一个Windows Update(KB4537759,KB4532693)并将Python从3.7更新到3.8。我甚至尝试将
shell=true
传递到
子进程。运行


我发现了问题的原因。它是Python的体系结构版本

我的Windows是64位的。我已经下载了32位和64位的嵌入式版本。64位版本找到了scp.exe可执行文件,如下所示:

  • MSC v.1916 32位(英特尔):
PS C:\Users\Alyson\Documents\0\Xpriment\python32>\python3.8.1(tags/v3.8.1:1b293b6,2019年12月18日,22:39:24)[MSC v.1916 32位(英特尔)]在win32上
>>>进口shutil;shutil.which(“scp”)
>>>
  • MSC v.1916 64位(AMD64):
PS C:\Users\Alyson\Documents\0\Xpriment\python64>\python3.8.1(tags/v3.8.1:1b293b612019年12月18日23:11:46)[MSC v.1916 64位(AMD64)]在win32上
>>>进口shutil;shutil.which(“scp”)
'C:\\Windows\\System32\\OpenSSH\\scp.EXE'
>>> 

我以前安装的Python是64位的。我对Visual Studio代码中没有安装解释器的消息感到烦恼,于是单击链接并重新安装解释器,但链接指向32位版本