python 虚拟环境 pyenv

一、pyenv简介

pyenv 主要用来管理 Python 的版本,比如一个项目需要 Python 2.x ,一个项目需要 Python 3.x 。

pyenv 通过系统修改环境变量来实现 Python 不同版本的切换。

pyenv 它并没有使用将不同的 PATH植入不同的shell这种高耦合的工作方式,而是简单地在PATH 的最前面插入了一个垫片路径(shims):~/.pyenv/shims:/usr/local/bin:/usr/bin:/bin。所有对 Python 可执行文件的查找都会首先被这个 shims 路径截获,从而使后方的系统路径失效。
 

二、安装pyenv

1、安装pyenv依赖包

yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel libpcap-devel xz-devel

yum -y install git (用于从git中下载pyenv)

2.安装pyenv

从git上面克隆下pyenv,安装完毕

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

3.配置pyenv环境变量

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

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

source ~/.bash_profile

4.验证pyenv安装是否成功

pyenv commands 查看pyenv命令

三、安装多版本的python

1、查看当前系统默认python版本

python --version

2、使用pyenv安装python3.5

1)查看pyenv可安装的python版本

pyenv install --list

2)安装所需python版本

pyenv install -v 版本号

pyenv install -v 3.5.2

(这个官网下载好慢,等了好几分钟)

3)查看已安装版本

pyenv versions

system 表示系统自带的版本,表示 当前正在使用的版本

每次安装完成后需要刷新py可用列表

pyenv rehash

删除已安装版本

pyenv uninstall XXXXXX

 4)常用命令

 

 四、使用pyenv

pyenv 可以从三个维度来管理 Python 环境,简称为: 当前系统 、 当前目录 、 当前shell 。这三个维度的优先级从左到右依次升高,即 当前系统 的优先级最低、 当前shell 的优先级最高。如果想修改系统全局的Python环境,可以采用 pyenv global PYTHON_VERSION 命令。该命令执行后会在 $(pyenv root) 目录(默认为 ~/.pyenv )中创建一个名为 version 的文件(如果该文件已存在,则修改该文件的内容),里面记录着系统全局的Python版本号。

1.当前系统模式 global

pyenv global 3.5.2

2.当前目录模式 local

 1)新建目录,查看当前的设定版本,提示为空

2)设置版本为3.5.2

pyenv local 3.5.2

3)取消local设置

取消当前设置的版本使用 pyenv local --unset或者直接删除当前目录下面的 .python-version 文件

3.当前shell模式

4.常用命令

$ pyenv global 2.7.8  # 全局
$ pyenv local 2.7.8   # 当前目录下
$ pyenv shell 2.7.8   # shell版本
$ pyenv shell --unset # 取消当前的shell设定的版本
#创建垫片路径(为所有已安装的可执行文件创建 shims,如:~/.pyenv/versions/*/bin/*,因此,每当你增删了 Python 版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令)
$ pyenv rehash 


$ pyenv install -l # 查看可安装的版本
$ pyenv install 2.7.8  # 安装python2.7.8的版本
$ pyenv rehash # 安装模块后
$ pyenv pyenv uninstall 2.7.8 # 卸载

五、安装 Pyenv-virtualenv插件

pyenv virtualenv 是pyenv的插件,为pyenv设置的python版本提供隔离的虚拟环境,设置虚拟环境后,在这某个目录下面安装的第三方库及修改库搜索路径都不会影响其他环境,相当于一个沙盒环境,互相不影响。
1.安装 pyenv-virtualenv插件

git clone git://github.com/yyuu/pyenv-virtualenv.git ./pyenv/plugins/pyenv-virtualenv

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

2.查看是否成功安装,并获取帮助

pyenv help virtualenv

source ~/.bash_profile

3.创建一个虚拟环境,py版本设置为3.5.2,名字为myenv

pyenv virtualenv 3.5.2 myenv

4.切换和使用myenv

pyenv activate myenv

5.退出myenv

pyenv deactivate

 

6.删除myenv

 7.常用命令

$ pyenv virtualenv 2.7.10 env-2.7.10  # 创建虚拟环境
$ pyenv activate env-2.7.10  # 激活虚拟环境
$ pyenv deactivate  # 退出虚拟环境
$ pyenv uninstall env-2.7.10 # 删除虚拟环境
$ rm -rf ~/.pyenv/versions/env-2.7.10  #删除真实目录

六、
pipenv
1.安装
$ pip install pipenv
2.使用命令
$ mkdir Pipenv-test    # 新建一个目录
$ cd Pipenv-test
$ pipenv --two/--three # 根据环境的python2/python3安装虚拟环境   可以用pyenv设置当前python环境
$ pipenv --two         # 创建好虚拟环境 在~/.virtualenv目录里面
$ sed -i s/pypi.python.org/pypi.doubanio.com/g Pipfile  # 修改Pipfile中的源
$ pipenv shell         # 进入虚拟环境
$ pipenv install requests # 安装requests的包 
$ pipenv --rm          # 删除当前虚拟环境
$ pipenv uninstall --all     #删除包 --all删除全部包并且修改Pipfile
$ pipenv graph       # 显示当前依赖关系图
$ pipenv lock        # 生成Pipenv.lock
# Pipfile.lock用来冻结软件包名称及其版本以及其自己的依赖关系的列表
$ pipenv check       # 检查包的安全性
$ exit               # 退出虚拟环境
  • pipfile pipfile.lock的区别:pipfile安装的包中没有指定包的版本,在pipfile.lock中指定了,有这个文件,以后安装的时候将自动安装.lock中指定的版本。
  • 项目中的方便
$ pipenv install     # 克隆下来一个项目 Pipenv会找到Pipfiles,创建虚拟环境,安装必要的包
$ pipenv install --dev pytest  # pytest包的名称会在Pipfile中的dev-packages下面
$ pipenv install -dev  # 安装dev下面的包,项目部署的时候可以更好的区分
$ pipenv --site-packages # 系统的包会移动到虚拟环境中
$ pipenv --help       # 还有其他命令就不一一介绍了,可以自行查看

3. ~/.pip/pip.conf配置

[global]
index-url = https://mirrors.aliyun.com/pypi/simple/                                                                       
[install] 
trusted-host=mirrors.aliyun.com                                                                                           
[list]
format = columns   # pip list格式设置





原文地址:https://www.cnblogs.com/uestc2007/p/11018926.html