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

871次阅读
没有评论

虚拟环境工具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\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

同样也可以关闭当前的终端窗口,重新启动一个。

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

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:wuyou2021-06-20发表,共计4538字。
新手QQ群:570568346,欢迎进群讨论 Python51学习