在 Windows 10 上通过 SSH 运行时,Poetry 安装会抛出 WinError 1312

sue*_*nna 8 python windows ssh operating-system python-poetry

我有一个从 Windows 机器到另一台机器的 SSH 连接,然后尝试进行诗歌安装。

\n

我的问题是:\n通过 ssh执行诗歌安装时出现此错误:

\n
[WinError 1312] A specified logon session does not exist. It may already have been terminated.\n
Run Code Online (Sandbox Code Playgroud)\n

当我在目标机器上本地执行该命令时,该命令可以完美运行,但通过 ssh 连接时会失败。

\n

我怎样才能摆脱/修复[WinError 1312]?

\n

我看到另一个用户最近发布了同样的问题,但将其删除。

\n

我已经看到了一些有关 MachineKeys 的线索,但真的不知道如何继续。任何建议将受到高度赞赏。

\n
\n

蟒蛇:3.10.8

\n

诗歌:1.2.1

\n
Installing dependencies from lock file\n\nPackage operations: 5 installs, 0 updates, 0 removals\n\n  \xe2\x80\xa2 Installing install-requires (0.3.0)\n\n  OSError\n\n  [WinError 1312] A specified logon session does not exist. It may already have been terminated.\n\n  at ~\\AppData\\Roaming\\pypoetry\\venv\\lib\\site-packages\\win32ctypes\\core\\ctypes\\_util.py:53 in check_zero\n       49\xe2\x94\x82\n       50\xe2\x94\x82 def check_zero_factory(function_name=None):\n       51\xe2\x94\x82     def check_zero(result, function, arguments, *args):\n       52\xe2\x94\x82         if result == 0:\n    \xe2\x86\x92  53\xe2\x94\x82             raise make_error(function, function_name)\n       54\xe2\x94\x82         return result\n       55\xe2\x94\x82     return check_zero\n       56\xe2\x94\x82\n       57\xe2\x94\x82\n\nThe following error occurred when trying to handle this error:\n\n\n  error\n\n  (1312, 'CredRead', 'A specified logon session does not exist. It may already have been terminated.')\n\n  at ~\\AppData\\Roaming\\pypoetry\\venv\\lib\\site-packages\\win32ctypes\\pywin32\\pywintypes.py:37 in pywin32error\n       33\xe2\x94\x82 def pywin32error():\n       34\xe2\x94\x82     try:\n       35\xe2\x94\x82         yield\n       36\xe2\x94\x82     except WindowsError as exception:\n    \xe2\x86\x92  37\xe2\x94\x82         raise error(exception.winerror, exception.function, exception.strerror)\n       38\xe2\x94\x82\n
Run Code Online (Sandbox Code Playgroud)\n

Xid*_*doc 6

根据堆栈跟踪和您的描述的相似性,我的猜测是您面临#1892#1917中的相同错误,其中 Poetry 尝试使用您的密钥环来访问/发布模块,因此当这些凭据无效时会失败。

但诗歌似乎试图访问密钥环,即使是为了安装操作。

提出的解决方案之一是keyring远程卸载软件包:

对我来说,我通过 pip 从该 virt 环境中卸载“keyring”包来解决这个问题。

另一种解决方案是导出环境变量PYTHON_KEYRING_BACKEND。以下是如何在 Windows cmd 上执行此操作的示例:

SET PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
Run Code Online (Sandbox Code Playgroud)

或 Windows powershell:

$env:PYTHON_KEYRING_BACKEND="keyring.backends.null.Keyring"
Run Code Online (Sandbox Code Playgroud)

或 Linux shell:

export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring
Run Code Online (Sandbox Code Playgroud)

不幸的是,问题 #1917 似乎仍然悬而未决且未解决,因此这是您目前可以找到的解决该问题的最佳解决方法。