虚拟环境工具pyenv的安装,配置和使用,完美控制python版本

前言

使用python进行开发,Unix/Linux 的环境会更加友好,不会出现莫名其妙的bug,虽然 windows store 也发布了 Ubuntu 子系统,可是功能不够全,系统不够完善。本文全面介绍了 Ubuntu、Archlinux、Centos、Mac下安装和使用pyenv的方法。Windows下使用pyenv的方法请移步 pyenv-win 源码地址查看: github.com/pyenv-win/p… ,固然pyenv也能够在Windows store的Linux子系统中使用。html


背景

python 版本比较多,2 和 3 相差比较大,当你须要不一样环境的时候,选择使用 docker,docker的使用教程能够在菜鸟教程找到python

www.runoob.com/docker/dock…linux

也能够在官网查找相关文档git

www.docker.com/github

若是用 docker 那就不须要隔离环境了,若是要直接运行在服务器上,那就必须有隔离环境。本文将会介绍使用pyenv来建立不一样python版本的虚拟环境。sql


使用

使用 pyenv 和 pyenv-virtualenv ,在 Linux 下完美隔离 python 各个版本docker

第 1 章:使用环境

注意: 本文的 Linux和Mac OS X 下进行,不涉及 windows下的安装使用shell

清单ubuntu

  • git
  • bash,zsh或者brew
  • pyenv
  • pyenv-virtualenv

一、安装 git

在各大 Linux 的发行版下安装 git 都很是简单,此处只展现部分示例vim

  • archlinux sudo pacman -S git
  • debian/ubuntu sudo apt install git
  • centos sudo yum install git
  • Mac brew install git

二、开启终端

Ubuntu下使用 shell

Ctrl + Alt + t 快捷键打开终端

三、安装 pyenv

说明: 本文的全部安装都严格遵照官方文档,与官方文档彻底保持一致。

源码git 地址:github.com/pyenv/pyenv

在终端中执行以下命令完成安装:

首先把项目克隆下来,放在家目录下的隐藏文件夹中:.pyenv

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

若是你是Mac用户,可使用brew命令来安装

brew update
brew install pyenv
复制代码

而后配置环境变量:

  • 若是你使用 bash,就依次执行以下命令:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc

echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc
复制代码
  • 若是你使用 zsh,就依次执行以下命令:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc

echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc
复制代码
  • 若是你用Mac,就执行以下命令:
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init-)"\nfi' >> ~/.bash_profile
复制代码

echo 命令的含义是:将引号中内容写入某文件中

请注意,以上的三条 echo 命令的最后一条命令,请保证它引号中的内容处于 ~/.bashrc 或者 ~/.zshrc 的最底部。

由于在 pyenv 初始化期间会操做 path 环境变量,致使不可预测的行为。

查看文件的底部内容,可使用 tail 命令,用法:tail ~/.bashrc 或者 tail ~/.zshrc,编辑文件可使用 vim 或者 vscode

而后,在使用 pyenv 以前,须要初始化 shell 环境,执行以下命令

exec $SHELL或者source ~/.bashrc

一样也能够关闭当前的终端窗口,从新启动一个。

四、安装 pyenv-virtualenv

源码git 地址:github.com/pyenv/pyenv…

把插件克隆在刚才已经安装完毕的 pyenv 的 plugins 文件夹中

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

若是你是Mac用户可使用brew命令来安装

brew install pyenv-virtualenv

而后配置环境变量

eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
复制代码
  • 若是你使用 bash,就执行以下命令:

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

  • 若是你使用 zsh,就执行以下命令:

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc 最后,在使用 pyenv 以前,从新初始化 shell 环境,执行以下命令

exec $SHELL或者source ~/.bashrc

或者重启一个终端窗口。

没有出错的话,此时已经完成了全部的安装操做,若是提示错误,请检查前文中的==路径==和==环境变量==(请检查是否使用对应系统环境的命令)是否配置正确,或者将操做回退,从新执行安装命令


第 2 章:使用 pyenv

此处仅展现 pyenv 和 pyenv-virtualenv 的平常用法

检查安装是否正确

  • 检查 pyenv 的版本

pyenv version

  • 查看 pyenv 已经托管了哪些 python 版本

pyenv versions

若是显示了正常的版本信息,说明安装成功,若是显示相似于 command not found 之类的提示,说明安装失败,请查看第一章末尾的提示。

安装 3.6.6 版本的 python

pyenv install 3.6.6

这里须要注意,某些状况下会安装失败,Build failed.

Don't panic,咱们能够查看pyenv在github wiki里面准备的应对方案,原文地址 github.com/pyenv/pyenv…

摘录以下,只须要执行对应的命令便可:

  • archlinux用户

sudo pacman -S base-devel openssl zlib

  • Mac用户

brew install openssl readline sqlite3 xz zlib

若是你使用的是OS X Mojave或者更高的版本(10.14+),还须要执行一下命令 sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

  • Ubuntu/Debian/Mint用户

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev

  • CentOS/Fedora <= 21 用户,确保已经安装了 xz 工具

sudo yum install gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel libffi-devel

  • Fedora >= 22 用户,确保已经安装了 xz 工具

sudo dnf install -y gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel

  • openSUSE用户

zypper install gcc automake openssl-devel ncurses-devel readline-devel zlib-devel tk-devel

  • Solus 用户

sudo eopkg it -c system.devel

sudo eopkg install git gcc make zlib-devel bzip2-devel readline-devel sqlite3-devel openssl-devel tk-devel

  • Linuxbrew用户

brew install bzip2 openssl readline sqlite xz

安装完这些补充的工具以后,再次执行:

pyenv install 3.6.6

就能够成功了,你能够不断的使用pyenv versions来查看被 pyenv 托管的 python 版本,多版本之间不会冲突,完美共存

执行pyenv install,而后按下 tab 键,就能够看到全部可选的安装版本

如何使用已经安装的版本建立虚拟环境

pyenv和pyenv-virtualenv的协做能够这么理解:

pyenv 托管安装的 python 版本,python-virtualenv 则调用对应的 python 版本

下面是如何建立和使用虚拟环境

1. 建立虚拟环境

首先须要建立一个虚拟环境,执行命令:

pyenv virtualenv 3.6.6 my-env
复制代码

最后一个是环境的名字,能够随便取。安装成功会显示:

Looking in links: /tmp/tmp0eywgc7v
Requirement already satisfied: setuptools in /home/vic/.pyenv/versions/3.6.6/envs/my-env/lib/python3.6/site-packages (39.0.1)
Requirement already satisfied: pip in /home/vic/.pyenv/versions/3.6.6/envs/my-env/lib/python3.6/site-packages (10.0.1)
复制代码

它写明了该虚拟环境的绝对路径。

2. 激活虚拟环境

在任意目录下,执行命令:

pyenv activate my-env
复制代码

在终端命令行前面,会出现(my-env) 的提示,进入python环境能够看到版本为虚拟环境设定的3.6.6,使用pip --version,能够看到 pip 包安装的绝对路径

使用终端进入任意目录,好比 ~/envtest

cd ~/envtest

而后在该目录下执行:

pyenv local my-env

也能够激活建立好的虚拟环境,执行:

ls -al

local命令和以前的命令区别在于,在 ~/envtest 目录下,会建立一个隐藏文件 .python-version,文件内容只包含一句话 my-env,只要使用终端进入 ~/test 目录,就会自动激活虚拟环境

退出虚拟环境使用下面两个中任意一条命令

pyenv deactivate  # 或者
source deactivate
复制代码

3. 删除虚拟环境

随着时间推移,你可能积攒不少虚拟环境,删除虚拟环境可使用命令

pyenv uninstall my-env或者rm -rf my-env直接删除虚拟环境所在的目录


第 3 章:更新 pyenv

若是是用 git 克隆的,更新则使用git pull命令

cd ~/.pyenv 或者 cd $(pyenv root)

git pull origin master

Mac用户则使用brew命令

brew upgrade pyenv


第 4 章:卸载 pyenv

因为 pyenv 把一切都放在 ~/.pyenv 下了,因此Linux下卸载分为两步

  1. 删除环境变量

  2. 执行:rm -rf ~/.pyenv或者 rm -rf $(pyenv root)

Mac用户卸载须要使用brew命令:

brew uninstall pyenv






PS

本文参考了官方文档并进行了修改,文档能够在源码github地址中找到

pyenv: github.com/pyenv/pyenv
pyenv-virtualenv: github.com/pyenv/pyenv…

相关文章
相关标签/搜索