Каталог OpenSSH недоступен из процессов Python в Windows 10

Каталог OpenSSH недоступен из процессов Python в Windows 10

Я использую Windows 10 (полностью обновленную версию) и Python 3.7.

Я могу видеть содержимое c:\Windows\System32\OpenSSH как через cmd, так и через PowerShell, и могу выполнить команду ssh как обычно.

Однако если я запускаю процесс Python, этот файл не виден, os.path.exists("c:\\Windows\\System32\\OpenSSH")возвращает False. Если я затем запускаю экземпляр cmd или Powershell в подпроцессе, этот каталог не виден.

Я пытаюсь использовать Pipenv, инструмент управления зависимостями Python, который создаст новую оболочку с правильной средой в рамках управления процессами.

Это приводит к такому поведению, как:

C:\Users\micro>dir c:\Windows\System32\OpenSSH\ssh.exe
Volume in drive C is OS
Volume Serial Number is AEDD-9508

Directory of c:\Windows\System32\OpenSSH

28/09/2017  15:49           851,456 ssh.exe
            1 File(s)        851,456 bytes
            0 Dir(s)  175,094,468,608 bytes free

C:\Users\micro>pipenv run dir c:\Windows\System32\OpenSSH\ssh.exe
The system cannot find the file specified.

C:\Users\micro>

Я общался с другими пользователями, и у них такой проблемы нет.

Я убедился, что все обновления установлены в Windows, и попробовал удалить и повторно добавить функцию OpenSSH.

Если у кого-то есть подсказка, какая информация может быть полезна для отладки, я был бы очень рад ее услышать.

решение1

Была точно такая же проблема, и я нашел решение в этой теме: https://stackoverflow.com/questions/41630224/python-does-not-find-system32

Windows на самом деле ищет SysWOW64; мой код для исправления этой проблемы был таким:

system32 = os.path.join(os.environ['SystemRoot'], 'SysNative' if 
platform.architecture()[0] == '32bit' else 'System32')
listtest_path = os.path.join(system32, 'openSSH', 'ssh-keygen.exe')
subprocess.call([listtest_path])

Связанный контент