【问题标题】:Python can't find ssh binaries in Windows using subprocess.run, even with full path to ssh.exePython 无法使用 subprocess.run 在 Windows 中找到 ssh 二进制文件,即使有 ssh.exe 的完整路径
【发布时间】:2020-05-29 16:36:15
【问题描述】:

当我在 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

我最近唯一做的就是安装 Windows 更新(KB4537759、KB4532693)并将 Python 从 3.7 更新到 3.8。我什至尝试将shell=true 传递给subprocess.run

scp existance tests

【问题讨论】:

    标签: python windows openssh


    【解决方案1】:

    我发现了导致问题的原因。它是 Python 的架构版本。

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

    • MSC v.1916 32 位(英特尔):
    PS C:\Users\Alyson\Documents\0\Xpriment\python32> .\python                                    Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 22:39:24) [MSC v.1916 32 bit (Intel)] on win32
    >>> import shutil; shutil.which("scp")
    >>>
    
    • MSC v.1916 64 位 (AMD64):
    PS C:\Users\Alyson\Documents\0\Xpriment\python64> .\python                                            Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
    >>> import shutil; shutil.which("scp")
    'C:\\Windows\\System32\\OpenSSH\\scp.EXE'
    >>> 
    

    我之前安装的 Python 是 64 位的。对 Visual Studio Code 中未安装解释器的消息感到困扰,我单击链接并重新安装了解释器,但链接指向的是 32 位版本。

    【讨论】:

      猜你喜欢
      • 2022-08-02
      • 2015-10-19
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      相关资源
      最近更新 更多