升级系统Python版本时修复Pipx

430 阅读2分钟

如果你把你系统的Python用于pipx,然后升级你的系统和它的Python版本,pipx会有一个糟糕的问题,如果你做错了,你的pipx管理的虚拟环境或多或少会被恢复。幸运的是,有一个方法可以解决这个问题,我在今天将我的办公室桌面升级到Fedora 35时测试了这个方法。

Pipx 的问题是它在 ~/.local/pipx/shared 虚拟环境中藏了一堆东西,这些东西依赖于 Python 版本。如果这个虚拟环境存在,但在pipx现在运行的新版本Python中不能工作,pipx就会严重失败。然而,pipx 会在任何需要的时候重建这个虚拟环境,一旦重建,新的虚拟环境就会工作。

因此,解决方法是删除这个虚拟环境,运行pipx命令让pipx重建它,然后告诉pipx重新安装你的所有pipx环境。你需要在升级了你的系统(或你的Python版本)之后做这个。你所做的事情是或多或少的。

# get rid of the shared venv
rm -rf ~/.local/pipx/shared
# get pipx to re-create it
pipx list
# have pipx fix all of your venvs
pipx reinstall-all

也许除了'pipx reinstall-all'之外,还有一个更简单的方法来修复你所有的pipx管理的虚拟环境,但这就是我在Fedora 35升级之后的做法,而且很有效。在任何情况下,我觉得每隔一段时间从头开始重新创建pipx管理的虚拟环境,以清除任何残留的残渣,也不是一个坏主意。

(一般来说,也不可能有什么更好的方法。 在某种程度上,所有的 Python 包都必须在新版本的 Python 下重新安装。有时你可以通过重命名文件来做到这一点,但任何带有编译组件的包都可能需要(更多)的工作。实际上,重新进行 pip 安装可以确保所有这些都是正确的,没有可能失败的黑客。