pyenv和virtualenv搭建python虚拟环境

时间:2022-05-27 12:09:44

pyenv: 是针对python版本的管理, 通过修改环境变量的方式来实现.

vittualenv: 针对python包的多版本管理,通过将python包安装到一个模块来做为python的包的虚拟环境, 通过切换目录来实现不同环境间的切换.

pyenv 原理:

pyenv通过在当前shell路径$PATH进行控制实现版本及开发环境控制,在路径前面插入垫片路径(shims)(指向具体的python版本及开发项目环境),这样系统会优先调用指定的版本及开发项目环境。
添加删除版本,开发项目环境,安装包改动都要运行 "pyenv rehash”,更新垫片路径(shims)到shell系统路径。

pyenv的使用:

1, 安装pyenv

    (1): 选择安装的目录; 我这里安装的是home目录.  

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

 (2): 配置环境变量.  

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

 (3): 添加pyenv初始化到shell环境.  

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

 (4): 重新启动shell,是更改生效 

exec $SHELL
source ~/.bash_profile

2,安装某个版本的python

可以查看一下有哪些版本的python可以安装;

[vagrant@localhost ~]$ pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4
  2.4.1
  2.4.2
  2.4.3
  2.4.4
  2.4.5
  2.4.6
  2.5
  2.5.1
  2.5.2
  ....
pyenv install -v 2.7.1

pyenv install -v 3.5.0

即可完成安装!!

注意!!!!

安装的过程中可能会报如下错误:

ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib? Please consult to the Wiki page to fix the problem. https://github.com/yyuu/pyenv/wiki/Common-build-problems
这是因为在安装之前需要安装一些依赖包, 如下:
yum install readline readline-devel readline-static -y
yum install openssl openssl-devel openssl-static -y
yum install sqlite-devel -y
yum install bzip2-devel bzip2-libs -y

问题即可解决
接着重复上一步:
pyenv install -v 3.5.0
pyenv install -v 2.7.12

安装成功!!!

卸载:

pyenv uninstall 3.5.0 

可查看所有版本:

[vagrant@localhost ~]$ pyenv versions
system
2.7.12
* 3.5.0 (set by .pyenv/version)
也可以查看当前前版本:
[vagrant@localhost ~]$ pyenv version
3.5.0 (set by .pyenv/version)
可以看出,我已经安装了三个版本的python
system代表这系统版本
2.7.12和3.5.0是我用pyenv安装的
* : 表示当前的python版本
可以切换python的版本:

[vagrant@localhost ~]$ pyenv versions    # 查看所有的版本
  system
  2.7.12
* 3.5.0 (set by .pyenv/version)

[vagrant@localhost ~]$ pyenv global 2.7.12    # 切换python版本

[vagrant@localhost ~]$ pyenv versions           # 当前版本已经已近切换到2.7.12
  system
* 2.7.12 (set by .pyenv/version)
  3.5.0
[vagrant@localhost ~]$ pyenv version            # 查看当前python版本
2.7.12 (set by .pyenv/version)
[vagrant@localhost ~]$ python
Python 2.7.12 (default, Sep  2 2017, 05:38:14)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

3, 利用virtualenv创建虚拟python环境,
(1)安装pyenv-virtualenv插件: 
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv   
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
source ~/.bash_profile

(2): 创建一个2.7.12的虚拟环境;  

pyenv virtualenv 2.7.12 env2712  
 
多环境
# 切换和使用新的python虚拟环境
$ pyenv activate env2712
$ python
Python 2.7.5 (default, Nov 20 2015, 02:00:19)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
# 退回系统环境
$pyenv deactivate

#删除新创建的环境
$rm -rf ~/.pyenv/versions/env2712