Pipx的'reinstall'命令也能通过重新安装注入的软件包而正常工作

181 阅读2分钟

虽然 pipx是管理通过PyPy安装的第三方Python程序的虚拟环境的好方法,但它必然仍有一些使用pip 升级程序的一般问题。不过有了 pipx,理论上明显的解决办法是,如果 'pipx upgrade' 不能让你满意了,你可以用 'pipx reinstall' 从头开始重做一切。然而,我对 pipx 重新安装的一个问题是,它是否能处理一个虚拟环境,比如Python LSP 服务器的虚拟环境,它还包含后来注入的额外软件包。

(在 Python LSP 服务器的情况下,有第三方插件。据我所知,你只能通过事后将它们注入到LSP服务器的虚拟环境中来安装这些插件)。

今天,本着实验的精神,我做了一个'pipx reinstall python-lsp-server',在保存了实际的Pip软件包列表之后。令我高兴的是,pipx也为我想要的第三方插件重新安装了额外的注入包,而且包列表中唯一的区别是不重要的(在某些时候,toml 显然不再是某人的需求的一部分)。这意味着,让pipx重新安装东西通常是一种可靠的方式,用你 "应该 "拥有的任何软件包依赖(及其版本)来重新创建一个程序的虚拟环境。

(对于一个 "应该 "的版本来说,就是 "一个人从头开始做这件事会得到什么"。如果你想给别人一个完全克隆你已知的程序的虚拟环境,你需要别的东西)。

这让我很高兴,原因很明显。我确实希望'pipx reinstall'的帮助文档能明确说明这一点,因为目前的措辞默默地暗示它不会重新安装额外注入的软件包。

(重新安装的文档说,该软件包是用 'pipx install ...' 安装的。一个'pipx install'显然只安装原来的软件包;它不会神奇地增加任何额外的注入的软件包。Pipx显然在这里做了比普通安装更多的事情,这很好,但如果有文件记录也很好)。