虚拟环境工具pyenv的安装,配置和使用,完美控制python版本
使用
使用 pyenv 和 pyenv-virtualenv ,在 Linux 下完美隔离 python 各个版本
第 1 章:使用环境
注意: 本文的 Linux和Mac OS X 下进行,不涉及 windows下的安装使用
清单
git
bash,zsh或者brew
pyenv
pyenv-virtualenv
1、安装 git
在各大 Linux 的发行版下安装 git 都非常简单,此处只展示部分示例
archlinux
sudo pacman -S git
debian/ubuntu
sudo apt install git
centos
sudo yum install git
Mac
brew install git
2、开启终端
Ubuntu下使用 shell
Ctrl + Alt + t 快捷键打开终端
3、安装 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
eval "$(pyenv init -)"
fi' >> ~/.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
eval "$(pyenv init -)"
fi' >> ~/.zshrc
如果你用Mac,就执行如下命令:
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init-)"
fi' >> ~/.bash_profile
echo 命令的含义是:将引号中内容写入某文件中
请注意,以上的三条 echo 命令的最后一条命令,请保证它引号中的内容处于 ~/.bashrc 或者 ~/.zshrc 的最底部。
因为在 pyenv 初始化期间会操作 path 环境变量,导致不可预测的行为。
查看文件的底部内容,可以使用 tail 命令,用法:tail ~/.bashrc 或者 tail ~/.zshrc,编辑文件可以使用 vim 或者 vscode
然后,在使用 pyenv 之前,需要初始化 shell 环境,执行如下命令
exec $SHELL或者source ~/.bashrc
同样也可以关闭当前的终端窗口,重新启动一个。
4、安装 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下卸载分为两步
删除环境变量
执行:rm -rf ~/.pyenv或者 rm -rf $(pyenv root)
Mac用户卸载需要使用brew命令:
brew uninstall pyenv
来源:PY学习网:原文地址:https://www.py.cn/article.html