Я использую 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])