Linux 下的 Python 多版本管理(pyenv)
2017-08-02 17:13
232 查看
简介
提到 Python 环境管理,更多人可能会首先想到 virtualenv。但与用于创建独立包环境的 virtualenv 不同,pyenv 的作用仅限于维护不同版本的 Python。它的使用不依赖于 Python,是一个简单、独立的纯 shell 脚本工具。pyenv 也以
pyenv-virtualenv 插件的形式支持 virtualenv,强烈建议使用。安装后比较方便的是可以在你 cd 到项目目录时自动切换相应的虚拟环境,而不用老是
<br />
就是有点麻烦。所以为了能让用户随心所欲地使用不同版本的诸如 python、pip、django-admin.py 这样的命令,本篇的主题,pyenv 就被开发出来了。pyenv 在安装和配置完毕后可以实现:一键(命令)切换全局、本地或当前 shell 使用的 Python 版本。<br />
Requirements 页面。例如 UP 使用的 Ubuntu 系统就需要先执行如下命令:
如果想自己手动安装并进行配置的话,可参考下
4000
面的步骤。<br />
<br />
添加环境变量。
这里的 shell 配置文件(
向 shell 添加
配置文件的位置同上一条一样需要修改<br />
重启 shell(因为修改了
<br />
<br />
<br />
建议添加 -v 参数用于显示细节。python-build 会首先尝试从一个镜像站点下载包,此时可以去
<br />
<br />
<br />
<br />
原文链接:https://my.oschina.net/lionets/blog/267469
提到 Python 环境管理,更多人可能会首先想到 virtualenv。但与用于创建独立包环境的 virtualenv 不同,pyenv 的作用仅限于维护不同版本的 Python。它的使用不依赖于 Python,是一个简单、独立的纯 shell 脚本工具。pyenv 也以
pyenv-virtualenv 插件的形式支持 virtualenv,强烈建议使用。安装后比较方便的是可以在你 cd 到项目目录时自动切换相应的虚拟环境,而不用老是
source.
<br />
需求
出于种种原因,很多人的电脑上会同时安装很多个版本的 Python,比如会有 2.7 + 3.4。一般在 windows 下我们都可以通过使用绝对路径的方式来绕过系统对 PATH 环境变量的查询;在 Linux 下除了这种方式外,还可以在脚本文件开头显示指定需要使用的解释器,就像这样:#!/usr/bin/env python2.7或
#!usr/bin/env python3.4。一旦特定版本的解释器被打开后,就不用再担心 PATH 的问题了。
就是有点麻烦。所以为了能让用户随心所欲地使用不同版本的诸如 python、pip、django-admin.py 这样的命令,本篇的主题,pyenv 就被开发出来了。pyenv 在安装和配置完毕后可以实现:一键(命令)切换全局、本地或当前 shell 使用的 Python 版本。<br />
原理
pyenv 的美好之处在于,他并没有使用将不同的$PATH植入不同的 shell 这种高耦合的工作方式,而是简单地在
$PATH的最前面插入了一个垫片路径(shims):
~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而架空了后面的系统路径。<br />
安装
pyenv 的 github 页面 提供了完整的安装与使用指导,所以本文基本上就是对 Readme 的翻译和解释。<br />软件依赖
Linux 下安装 pyenv 前需要做一些准备工作,详情参考Requirements 页面。例如 UP 使用的 Ubuntu 系统就需要先执行如下命令:
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm<br />
自动安装
作者很亲切地提供了一个自动安装工具:$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
如果想自己手动安装并进行配置的话,可参考下
4000
面的步骤。<br />
Github 检出
将 pyenv 检出到你想安装的目录。建议路径为:$HOME/.pyenv
$ cd $ git clone git://github.com/yyuu/pyenv.git .pyenv
<br />
添加环境变量。
PYENV_ROOT指向 pyenv 检出的根目录,并向
$PATH添加
$PYENV_ROOT/bin以提供访问
pyenv这条命令的路径
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
这里的 shell 配置文件(
~/.bash_profile)依不同 Linux 而需作修改——Zsh:
~/.zshenv;Ubuntu:
~/.bashrc<br />
向 shell 添加
pyenv init以启用 shims 和命令补完功能
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
配置文件的位置同上一条一样需要修改<br />
重启 shell(因为修改了
$PATH)
$ exec $SHELL
<br />
使用
pyenv 总共也就 11 条不同的命令,详情可参见:Command Reference。下面就最重要的几(8)条进行说明:<br />pyenv versions
查看当前 pyenv 可检测到的所有版本,处于激活状态的版本前以 * 标示。$ pyenv versions 2.5.6 2.6.8 *2.7.6 (set by /home/yyuu/.pyenv/version) 3.3.3 jython-2.5.3 pypy-2.2.1
<br />
pyenv version
查看当前处于激活状态的版本,括号中内容表示这个版本是由哪条途径激活的(global、local、shell)$ pyenv version 2.7.6 (set by /home/yyuu/.pyenv/version)
<br />
pyenv install
使用 python-build(一个插件) 安装一个 Python 版本,到$PYENV_ROOT/versions路径下。
$ pyenv install -v 2.7.3
建议添加 -v 参数用于显示细节。python-build 会首先尝试从一个镜像站点下载包,此时可以去
/tmp/python-build.xxx里面关心一下下载速度。如果太慢,可以直接在 shell 里
ctrl-c终止此次下载,然后 python-build 会自动去
python.org/ftp下载。不一定哪个更快。<br />
pyenv uninstall
卸载一个版本$ pyenv uninstall 2.7.3
<br />
pyenv rehash
为所有已安装的可执行文件 (如:~/.pyenv/versions/*/bin/*) 创建 shims,因此,每当你增删了 Python 版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令
$ pyenv install 2.7.3 $ pyenv rehash
<br />
pyenv global
设置全局的 Python 版本,通过将版本号写入~/.pyenv/version文件的方式。
$ pyenv global 3.4.0
<br />
pyenv local
设置面向程序的本地版本,通过将版本号写入当前目录下的.python-version文件的方式。通过这种方式设置的 Python 版本优先级较 global 高。pyenv 会从当前目录开始向上逐级查找
.python-version文件,直到根目录为止。若找不到,就用 global 版本。
$ pyenv local 2.7.3
<br />
pyenv shell
设置面向 shell 的 Python 版本,通过设置当前 shell 的PYENV_VERSION环境变量的方式。这个版本的优先级比 local 和 global 都要高。
--unset参数可以用于取消当前 shell 设定的版本。
$ pyenv shell pypy-2.2.1 $ pyenv shell --unset
原文链接:https://my.oschina.net/lionets/blog/267469
相关文章推荐
- Linux 下安装 pyenv(Python多版本管理)
- Python版本管理:pyenv和pyenv-virtualenv(MAC、Linux)、virtualenv和virtualenvwrapper(windows)
- Python linux 上的管理工具 pyenv 安装, pip 使用, python项目(版本分割, 项目分割, 虚拟环境创建)
- python 版本管理工具 pyenv 使用备忘
- pyenv管理多版本python和虚拟环境常用命令
- Python多版本共存管理工具之pyenv
- python 3 pyenv版本管理与pymsql、paramiko模块
- Linux下python的升级及多版本管理
- 【Python】03、python多版本管理工具pyenv
- 使用pyenv管理不同的python版本
- Python多版本管理软件pyenv的安装应用及pip的使用讲解
- Linux——Django 开发环境部署(二)python版本控制器pyenv
- Python多版本管理工具pyenv及环境隔离工具virtualenv
- mac多版本python管理工具pyenv
- Python多版本管理软件pyenv的安装应用及pip的使用讲解
- Python多版本管理软件pyenv的安装应用及pip的使用讲解
- 通过pyenv实现linux多版本python共存
- python多版本管理工具pyenv安装
- Python linux多版本共存以及虚拟环境管理
- pyenv管理多版本python