用 pyenv 管理 Python 版本
缘起
笔者曾提到,Python 用 venv 创建虚拟环境。的确,Python 中采用 venv 来管理虚拟环境是一个很棒的局部安装方案,类似 npm 的 node_modules 目录。但是该方案还尚且不能解决 Python 版本切换的问题,幸运的是,pyenv 这个工具可以完美解决,类似 npm 中的 n,它可以使用简单的命令切换多个 Python 版本。
本文将以 Ubuntu 22.04 为例来介绍它的安装方法,虽然它原生并不支持 Windows,但是有人为 Windows 做了移植,见 pyenv-win。
值得注意的是,这个项目有趣的地方在于,无论是安装还是使用,都是以用户权限都能完成的,非常适合当今多用户共享显卡的服务器。
David Wheeler: Any problem in computer science can be solved by another layer of indirection.
安装方法 (Ubuntu)
首先安装依赖:
1 |
|
执行一键安装脚本:
1 |
|
如果上面的失败可以试试下面这个:
1 |
|
然后把出现的一段放到 .bashrc
末尾:
1 |
|
再执行 . .bashrc
重新加载配置文件,这样就安装好了。
安装方法 (Windows)
在 PowerShell 里运行如下:
1 |
|
如果需要换源,对 ~/.pyenv/pyenv-win/.version_cache.xml
文件进行一个全局替换,把 https://www.python.org/ftp/python
替换为 https://cdn.npmmirror.com/binaries/python
,然后就可以正常使用啦!
需要注意的是,pyenv-win 相比于 pyenv 有一个区别:在 pyenv 中我们可以使用大版本号去进行前缀匹配,例如 pyenv shell 3.7
就可以自动定位到 3.7.x 版本(前提是只存在一个 3.7.x 版本),而在 pyenv-win 中则需要精确提供版本,不然会报 pyenv specific python requisite didn't meet. Project is using different version of python.
的错误。
幸运的是,经过测试,pyenv-win 对于 .python-version
的前缀匹配是完美兼容的,这意味着与 pyenv 具有很好的兼容性。
用法
1 |
|
推荐阅读
哦对了
千万不要手贱执行 sudo apt remove python
用 pyenv 管理 Python 版本