Python2和Python3之间存在较大的差异,且由于各种原因导致Python2和Python3的长期共存(虽然2020年1月1日Python2已经不再维护,但是网络上的代码和书??上依然有部分采用Python2)
实际工作中,可能同时需要用到Python2和Python3,经常需要在Python2和Python3之间切换
Pyenv: Python版本管理工具,可以安装多个不同的Python版本,不同的Python版本之间切换也比较简单
切换Python的版本之后,与版本相关的依赖(pip)也会一起切换,不用担心不同版本在系统中是否相互干扰
直接从GitHub下载项目到本地,设置环境变量和启动自动补全的功能
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
正克隆到 ‘/home/test/.pyenv‘...
remote: Enumerating objects: 39, done.
remote: Counting objects: 100% (39/39), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 18096 (delta 17), reused 24 (delta 10), pack-reused 18057
接收对象中: 100% (18096/18096), 3.61 MiB | 4.00 KiB/s, done.
处理 delta 中: 100% (12306/12306), done.
$echo ‘export PYENV_ROOT="$HOME/.pyenv"‘ >> ~/.bash_profile
$echo ‘export PATH="$PYENV_ROOT/bin:$PATH"‘ >> ~/.bash_profile
$echo -e ‘if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi‘ >> ~/.bash_profile
安装完成之后需要重新载入配置文件 source .bash_profile
查看pyenv当前支持的版本,通过install命令
pyenv可以安装不同的Python版本,也可以安装不同的Python实现
pyenv install --list
安装Python
pyenv install -v 3.8.0
Pyenv是下载源码包编译安装的,需要提前安装依赖
pyenv会从官方地址下载相应的版本,比较慢,而且经常失败
~/.pyenv/cache
目录下,再执行安装,会使用已经存在的源码包# 提前安装依赖
$ yum -y install gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel git
# 从其他的源安装
$ v=3.8.0; wget https://npm.taobao.org/mirrors/python//$v/Python-$v.tar.xz -P ~/.pyenv/cache/; pyenv install $v
查看当前存在的版本
? pyenv versions
*
表示当前使用的版本选择不同的Python版本
? pyenv global 3.8.0
删除Python版本
? pyenv unistall 3.8.0
virtualenv 本身是一个独立的项目,用以隔离不同项目的工作环境
组合Pyenv和virtualenv就可以实现Python和第三方库任意版本的组合, 拥有强大的灵活性,避免项目之间的干扰
virtualenv是一个独立的工具,可以单独使用,但是如果使用了Pyenv,就需要安装pyenv-virtualenv插件,而不是通过virtualenv软件使用virtualenv功能
$ git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv
$ echo ‘eval "$(pyenv virtualenv-init -)"‘ >> ~/.bash_profile
与pyenv安装类似,完成之后需要重新载入配置文件 source .bash_profile
安装完成之后,可以为同一个Python解释器安装多个不同的工作环境
查看工作环境
pyenv virtualenvs
通过activate
和deactiveta
进入和退出一个工作环境
原文:https://www.cnblogs.com/ZhaoLong-study/p/13344382.html