解决pyenv versions没有列出系统的python版本
☁️ 前言
最近倒腾python,发现系统中的python版本太多了,于是打算安装一个python管理工具,看见网上都在安利pyenv
这个工具,安装了一下,发现使用pyenv versions
之后竟然没有显示一个python版本的信息,这让我感到很奇怪,后来在一篇帖子中找到了答案,原来pyenv versions默认只会管理通过pyenv安装的python版本,要让pyenv管理之前安装的版本,需要手动创建链接。(参考帖子原文链接)
🚪 正文
在参考帖子中,作者使用的是Homebrew安装的python,因此提供了这样一条命令:
ln -s $(brew --cellar python)/* ~/.pyenv/versions/
我试了一下,brew --cellar python
,输出如下:
同时我还检查了一下/opt/homebrew/Cellar下的python版本,如下图:
于是,为了使其他几个版本也被pyenv管理,我又手动创建了几个链接,使用指令如下:
ln -s /opt/homebrew/opt/python@3.9 ~/.pyenv/versions/
ln -s /opt/homebrew/opt/python@3.12 ~/.pyenv/versions/
(这里的指令请根据自己电脑中具体的版本修改)
此外,由于/usr/local/bin目录下也有python,也需要额外创建链接。
因为这里具体的版本号实际上是3.11.4,所以在创建链接时使用了别名,如下:
ln -s /Library/Frameworks/Python.framework/Versions/3.11 ~/.pyenv/versions/3.11.4
(这里的指令请根据具体版本修改)
注意,这里请不要直接使用 sudo mv /Library/Frameworks/Python.framework/Versions/3.11 /Library/Frameworks/Python.framework/Versions/3.11.4
来将文件夹的名称从3.11修改为3.11.4,否则你再使用python3 --version
就不会显示python 3.11.4版本了。
最后,其实我还发现/usr/bin
目录下还有个python3可执行文件,竟然不是链接文件,让我匪夷所思,于是上网找了一下,说是系统自带的python版本,最好不要删了,于是这个版本就不管了。为什么 macOS 在 /usr/bin/ 下会有 python3?
最后效果:
这里我手动使用
pyenv global 3.13.0_1
将全局版本改为3.13.0_1了,否则默认*
是在system前面。