Python工作环境管理
Python2和Python3之间存在较大的差异,且由于各种原因导致Python2和Python3的长期共存(虽然2020年1月1日Python2已经不再维护,但是网络上的代码和书?上依然有部分采用Python2)
实际工作中,可能同时需要用到Python2和Python3,经常需要在Python2和Python3之间切换
- 比如: Centos默认安装的是Python2版本,而且yum工具中也在使用python2,但是日常学习中使用python3作为开发环境
Pyenv - 管理不同的Python版本
Pyenv: Python版本管理工具,可以安装多个不同的Python版本,不同的Python版本之间切换也比较简单
- 安装多个不同的Python版本
- 实现不同Python版本的切换(包含pip)
切换Python的版本之后,与版本相关的依赖(pip)也会一起切换,不用担心不同版本在系统中是否相互干扰
- Pyenv 不能安装在Windows系统上
- 在Windows系统上安装pyenv-win工具,是Pyenv的适应版本,操作一致
Pyenv的安装
直接从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的使用
- 查看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 - 管理不同的项目
virtualenv 本身是一个独立的项目,用以隔离不同项目的工作环境
- 需要使用不同的NumPy的版本,明显不能使用常规的方法在一台服务器上完成
- virtualenv 将不同的numpy安装到不同的工作环境中,需要那个,进入那个工作环境
组合Pyenv和virtualenv就可以实现Python和第三方库任意版本的组合, 拥有强大的灵活性,避免项目之间的干扰
virtualenv是一个独立的工具,可以单独使用,但是如果使用了Pyenv,就需要安装pyenv-virtualenv插件,而不是通过virtualenv软件使用virtualenv功能
pyenv-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
进入和退出一个工作环境
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。