pyenv来管理mac和Linux上杂乱的python版本

Posted by crazywhale on 2019-07-01

写在前面

pyenv 是 Python 版本管理工具。 pyenv 可以改变全局的 Python 版本,安装多个版本的 Python, 设置目录级别的 Python 版本,还能创建和管理 virtual python environments 。所有的设置都是用户级别的操作,不需要 sudo 命令。

我的电脑是macOS,所以对于mac下默认的python等软件包其实一直以来都是很抵触的,版本老,不能装pip等等(其实可以但是是py2就很麻烦)。所以无奈之下之前使用 homebrew 安装python,然后发现,homebrew的python下没法安装各类 Tensorflow 或其他机器学习相关的依赖包,于是就把homebrew的py卸载掉,装了python官网下载的安装包。但是官网下载的安装包虽然全,但是它好像和homebrew水火不容,也就是homebrew里面依赖python的软件包安装时还是会装一遍homebrew的python,就很麻烦。

于是就打算尝试下闻名已久的 pyenv

安装之前

需要卸载电脑内各类除了系统的python外的其他python,因为本人也有轻度的软件包洁癖,坚决不允许同一个软件包在电脑内安装两次。

卸载方式见https://blog.csdn.net/qq_35246620/article/details/78252549

安装方式

使用homebrew可直接安装pyenv。

安装后需要在 .bash_profile.zshrc 文件中添加下面的内容来开启自动补全。

1
2
3
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

但实测使用brew装完的话,其实只需要添加第二行就够了。当然也可能是我现在用不到virtualenv的关系吧。用到了可能就需要了,先留着。

Python 切换

指令:

1
2
pyenv global 2.7.3  # 设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。
pyenv local 2.7.3 # 设置 Python 本地版本,通过将版本号写入当前目录下的 .python-version 文件的方式。通过这种方式设置的 Python 版本优先级较 global 高。

python 优先级

shell > local > global