在 Windows 上,为什么“poetry shell”会删除/丢失 shell 历史记录功能?

Jul*_*les 3 windows shell python-poetry

在 Windows 默认命令 shell (cmd.exe) 中,您可以使用各种控件访问键入命令的历史记录(向上箭头表示最近的命令等)。

当您使用“poetry shell”命令生成一个新的虚拟环境时,您会生成一个新的 shell,但历史命令(如向上箭头和 F7)不起作用,如果您运行 doskey /history,它会为您提供命令历史记录从运行“poetry shell”命令之前开始。

如果您运行 cmd.exe 来生成另一个 shell,这也会禁用历史记录。

关于为什么会发生这种情况或者如何获得禁用历史记录的命令 shell 有什么想法吗?

谢谢

小智 5

这绝对是使用Poetry的痛点之一。我不知道是什么原因造成的。我的解决方法:激活 Poetry 手动创建的虚拟环境。这可以避免 Poetry 所做的任何事情来干扰 cmd.exe 的历史记录。为此,我询问 Poetry 在哪里创建了 venv,然后复制并粘贴该加号Scripts\activate以输入工作 venv。例如:

C:\>poetry env info

Virtualenv
Python:         3.9.8
Implementation: CPython
Path:           C:\Users\xxx\AppData\Local\pypoetry\Cache\virtualenvs\
runestone-poetry-project-kVed82-L-py3.9
Valid:          True

System
Platform: win32
OS:       nt
Python:   C:\Users\xxx\AppData\Local\Programs\Python\Python39

C:\>C:\Users\xxx\AppData\Local\pypoetry\Cache\virtualenvs\
runestone-poetry-project-kVed82-L-py3.9\Scripts\activate
(runestone-poetry-project-kVed82-L-py3.9) C:\>

Run Code Online (Sandbox Code Playgroud)

另一种解决方法:poetry run pwsh改为运行 PowerShell;它的历史运行正常(但是,当然,PowerShell 与 cmd 有很大不同)。