转自使用 pyenv 管理 Python 版本 ,略有修改。
前言
在使用python的时候,我们经常被python项目混乱的版本以及复杂的包依赖搞得头晕脑胀,但是自从有了pyenv和anaconda(python包虚拟环境,包依赖),一切都清晰明了了。
pyenv 是 Python 版本管理工具。 pyenv 可以改变全局的 Python 版本,安装多个版本的 Python, 设置目录级别的 Python 版本,还能创建和管理 virtual python environments 。所有的设置都是用户级别的操作,不需要 sudo 命令。
pyenv 主要用来管理 Python 的版本,比如一个项目需要 Python 2.x ,一个项目需要 Python 3.x 。 而 anaconda 主要用来管理 Python 包的依赖,不同项目需要依赖的包版本不同,则需要使用虚拟环境。
pyenv 通过系统修改环境变量来实现 Python 不同版本的切换。而 anaconda 通过将 Python 包安装到一个目录来作为Python 包虚拟环境,通过切换目录来实现不同包环境间的切换。
pyenv 的美好之处在于,它并没有使用将不同的 PATH 植入不同的Shell这种高耦合的工作方式,而是简单的在 PATH 的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而使后方的系统路径失效。
pyenv安装
具体的安装方式参照 官网
- centos自动安装
1 | # curl https://pyenv.run | bash |
- centos手动下载安装
在服务器环境中,发现使用上一种方式经常不好使,网络无法链接,所以采用以下这种方式,
1 | $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv |
我这里是Mac,推荐使用brew安装。
安装成功之后,在.bashrc 或者 .bash_profile 中添加三行来开启自动补全.
1 | export PATH="$HOME/.pyenv/bin:$PATH" |
pyenv 常用命令
使用 pyenv commands 显示所有可用命令
- 查看本机安装 Python 版本
1 | pyenv versions |
- 查看可安装 Python 版本
1 | pyenv install -l |
- python 安装与卸载
1 | $ pyenv install 2.7.3 # 安装python |
- python切换
1 | $ pyenv global 2.7.3 # 设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。 |
python优先级
shell > local > global
pyenv 会从当前目录开始向上逐级查找 .python-version 文件,直到根目录为止。若找不到,就用 global 版本。
1 | $ pyenv shell 2.7.3 # 设置面向 shell 的 Python 版本,通过设置当前 shell 的 PYENV_VERSION 环境变量的方式。这个版本的优先级比 local 和 global 都要高。–unset 参数可以用于取消当前 shell 设定的版本。 |