使用pyenv和virtualenv搭建python虚拟环境实践总结
2017-02-21 17:20
966 查看
介绍
出于种种原因,很多人的电脑上会同时安装很多个版本的 Python,比如会有 2.7 + 3.4。一般在 windows 下我们都可以通过使用绝对路径的方式来绕过系统对 PATH 环境变量的查询;在 Linux 下除了这种方式外,还可以在脚本文件开头显示指定需要使用的解释器,就像这样:#!/usr/bin/env python2.7 或 #!usr/bin/env python3.4。一旦特定版本的解释器被打开后,就不用再担心 PATH 的问题了对于上述问题的解决方案,更多人可能会首先想到 virtualenv。但与用于创建独立包环境的 virtualenv 不同,pyenv 的作用仅限于维护不同版本的 Python。它的使用不依赖于 Python,是一个简单、独立的纯 shell 脚本工具。pyenv 也以 pyenv-virtualenv 插件的形式支持 virtualenv,强烈建议使用。安装后比较方便的是可以在你 cd 到项目目录时自动切换相应的虚拟环境,而不用老是 source.
pyenv 在安装和配置完毕后可以实现:一键(命令)切换全局、本地或当前 shell 使用的 Python 版本。
pyenv 原理
pyenv 的美好之处在于,他并没有使用将不同的 PATH植入不同的shell这种高耦合的工作方式,而是简单地在PATH 的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而架空了后面的系统路径。安装pyenv
pyenv 的 github 页面 提供了完整的安装与使用指导,所以本文基本上就是对 Readme 的翻译和解释手动安装
手动安装详细步骤如下:$mkdir ~/.pyenv $git clone git://github.com/yyuu/pyenv.git .pyenv $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile #向 shell 添加 pyenv init 以启用 shims 和命令补完功能 $ exec $SHELL $ source ~/.bash_profile
这里的 shell 配置文件(~/.bash_profile)依不同Linux 而需作修改——Zsh:~/.zshenv;Ubuntu:~/.bashrc
自动安装
$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bashpyenv 命令总结
详细列表:https://github.com/yyuu/pyenv/blob/master/COMMANDS.md#command-reference常用命令如下:
- pyenv versions:查看当前 pyenv 可检测到的所有版本,处于激活状态的版本前以 * 标示。
- pyenv version:查看当前处于激活状态的版本,括号中内容表示这个版本是由哪条途径激活的(global、local、shell)
- pyenv install:使用 python-build(一个插件) 安装一个 Python 版本,到 $PYENV_ROOT/versions 路径下。建议添加 -v 参数用于显示细节。python-build 会首先尝试从一个镜像站点下载包,此时可以去 /tmp/python-build.xxx 里面关心一下下载速度
- pyenv uninstall:卸载一个版本
- pyenv rehash:为所有已安装的可执行文件 (如:~/.pyenv/versions//bin/) 创建 shims,因此,每当你增删了 Python 版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令
- pyenv global:设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。
- pyenv local:设置面向程序的本地版本,通过将版本号写入当前目录下的 .python-version 文件的方式。通过这种方式设置的 Python 版本优先级较 global 高。pyenv 会从当前目录开始向上逐级查找 .python-version 文件,直到根目录为止。若找不到,就用 global 版本。
- pyenv shell:设置面向 shell 的 Python 版本,通过设置当前 shell 的 PYENV_VERSION 环境变量的方式。这个版本的优先级比 local 和 global 都要高。–unset 参数可以用于取消当前 shell 设定的版本。
安装pyenv-virtualenv
介绍
pyenv virtualenv是pyenv的插件,为UNIX系统上的Python virtualenvs提供pyenv virtualenv命令。安装步骤
$git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv $echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile $source ~/.bash_profile
实践
多个Python版本快速切换
首先我们可以查看一下有哪些版本的python 可以安装:pyenv install –list安装:pyenv install -v 3.5.3(这个过程会比较漫长)
pyenv versions (查看所有版本)
$ pyenv versions * system (set by /root/.pyenv/version) 3.5.3
pyenv version(查看当前版本)
系统中不同python版本切换的操作截图如下:
利用virtualenv 创建虚拟python环境
创建一个3.5.3的环境:$ pyenv virtualenv 3.5.3 env353 (这条命令在本机上创建了一个名为env353的python虚拟环境,这个环境的真实目录位于:~/.pyenv/versions/)切换和使用新的python虚拟环境:$ pyenv activate env353
环境验证
(env353) root@native-sunaihua-5-25-18:~# pyenv activate env353 pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior. (env353) root@native-sunaihua-5-25-18:~# python --version Python 3.5.3 (env353) root@native-sunaihua-5-25-18:~# pip list DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning. pip (9.0.1) setuptools (28.8.0)
可以看到, python版本已经是3.5.3, 而且是在虚拟环境之中 (env353),这时可以对这个环境进行任意包的安装,且不会对其他环境造成影响
离开环境:pyenv deactivate
相关文章推荐
- 【Python配置】使用pyenv与virtualenv搭建单机多版本python多虚拟环境开发
- 使用pyenv和virtualenv搭建python虚拟环境
- 使用pyenv和virtualenv搭建python虚拟环境
- 使用pyenv和virtualenv搭建python虚拟环境
- 用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境
- 用pyenv和virtualenv搭建单机多版本python虚拟开发环境
- 使用virtualenv搭建Python虚拟环境
- 用pyenv和virtualenv搭建单机多版本python虚拟开发环境
- 【转载】CentOS下用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境
- 使用virtualenv搭建python虚拟开发环境
- 使用 Virtualenv 搭建虚拟 Python 环境
- CentOS下用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境
- 使用virtualenv和pip搭建python虚拟环境
- [转]用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境
- centos6 pyenv和virtualenv搭建python虚拟环境
- 用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境
- 使用Virtualenv搭建python虚拟开发环境介绍
- 如何利用pyenv 和virtualenv 在单机上搭建多版本python 虚拟开发环境
- 用pyenv和virtualenv搭建单机多版本python虚拟开发环境-命令
- 用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境