Windows 10 中的 Python 進程無法存取 OpenSSH 目錄

Windows 10 中的 Python 進程無法存取 OpenSSH 目錄

我正在運行完全最新的 Windows 10 和 Python 3.7。

我可以透過cmd和PowerShell看到c:\Windows\System32\OpenSSH的內容,並且可以正常執行ssh命令。

但是,如果我啟動 Python 進程,則該檔案不可見,os.path.exists("c:\\Windows\\System32\\OpenSSH")返回False.如果我隨後在子進程中啟動 cmd 或 Powershell 的實例,則該目錄不可見。

我正在嘗試使用 Pipenv,這是一個 Python 依賴項管理工具,它將使用正確的環境實例化一個新的 shell,作為其進程管理的一部分。

這會導致以下行為:

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])

相關內容