文章目录
一.Pyenv简介
二.Pyenv的安装
2.1 pyenv安装—在线安装
2.2 pyenv安装—离线安装
三.pyenv常用命令
四.pip包管理
一.Pyenv的简介:
在开发Python程序的时候,有时候可能需要在不同版本的Python上进行测试。pyenv就是这么一个管理多版本Python的工具。由于在Windows中我们可以同时安装多个版本的Python,所以这里是在Linux下介绍该工具。使用pyenv可以达到以下效果:
- 管理Python解释器
- 管理Python版本--配置当前用户的python的版本;配置当前shell的python版本;配置某个项目(目录及子目录)的python版本
- 管理Python的虚拟环境--配置多个虚拟环境
1.1工作原理介绍
pyenv是利用系统环境变量PATH的优先级,劫持python的命令到pyenv上,根据用户所在的环境或目录,使用不同版本的python。
how it works:
At a high level, pyenv intercepts Python commands using shim executables injected into your PATH, determines which Python version has been specified by your application, and passes your commands along to the correct Python installation.
对于系统环境变量PATH,里面包含了一串由冒号分隔的路径,例如/usr/local/bin:/usr/bin:/bin。每当在系统中执行一个命令时,例如python 或 pip,操作系统就会在 PATH 的所有路径中从左至右依次寻找对应的命令。因为是依次寻找,因此排在左边的路径具有更高的优先级。在PATH最前面插入一个$(pyenv root)/shims目录,$(pyenv root)/shims目录里包含名称为python以及pip等可执行脚本文件;当用户执行python或pip命令时,根据查找优先级,系统会优先执行shims目录中的同名脚本。pyenv正是通过这些脚本,来灵活地切换至我们所需的Python版本。
二.Pyenv的安装
2.1 pyenv安装—在线安装
1) 安装git
# yum -y install git
2) 安装python编译依赖环境
# yum -y install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel
3) 创建普通用户python
# useradd python
4) 使用普通用户python登录后安装pyenv
# su - python #切换到python用户进行pyenv的安装
$ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
安装完成后,输出如下:
5) 加载pyenv
根据上面的提示将指定内容填入.bashrc文件中,并刷新文件使之生效
$ cat >> .bashrc << OVER
> export PATH="/home/python/.pyenv/bin:$PATH"
> eval "$(pyenv init -)"
> eval "$(pyenv virtualenv-init -)"
> OVER
$ source .bashrc
#这样当用户每次登录的时候,都会执行用户的.bashrc中的脚本,就会启动pyenv。 安装好的pyenv就在~/.pyenv中(当前用户家目录中).
6) 检查安装pyenv结果
7) 注意
l 在 https://github.com/pyenv/pyenv-installer 有安装文档.
l centos6版本:如果curl出现 curl: (35) SSL connect error ,是nss版本低的问题,配置yum源更新它即可。
2.2 pyenv安装—离线安装
首先在能够联网的机器上从github上下载项目:
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
$ git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenvvirtualenv
$ git clone https://github.com/pyenv/pyenv-update.git ~/.pyenv/plugins/pyenvupdate
$ git clone https://github.com/pyenv/pyenv-which-ext.git ~/.pyenv/plugins/pyenv-which-ext
#可以将克隆的目录打包,方便以后离线使用。
此处我们还是通过普通用户python在另一台干净的机器上做安装测试,此时python用户的家目录信息如下:
将下载好的项目上传到不能联网的机器上的python家目录下,如下:
$ vim ~/.bashrc #将下面信息手动写入到该文件中
export PATH="/home/python/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" |
$ source .bashrc
$ pyenv -v #检查安装情况
三. pyenv常用命令
1) version(s)
$ pyenv version 显示当前的python版本;
$ pyenv versions 显示所有可用的python版本,和当前版本。
2) install—联网安装和不联网安装
$ pyenv install --list # 列出可安装版本,一般列出信息较多,等同于-l
$ pyenv install <version> # 安装对应版本,可使用-v参数查看安装详情
首先检查本地是否有需要安装的软件包,如果没有,就联网下载,如果有,就直接安装。
安装路径文件如下所示,即每次安装的python都在该目录下:
在这个安装过程中,输出的日志信息存放于/tmp目录下,如下
上面的方式是联网安装,我们也可以不联网进行安装,方法如下:
首先在用户目录下的.pyenv目录中新建一个cache目录,将下载好的python包放在该目录中,然后再使用pyenv install +下载好的python版本
将下载好的python-3.8.0*的包放在该目录中,等待调用
3) global、shell、local的区别
global:对当前用户的python环境进行修改,基本不用,当很多同事使用同一用户进行开发时,这样的参数会影响所有同事的开发环境
$ python global 3.8.0: 将当前用户的当前python版本修改成3.8.0,注意当前用户,不是整个系统,即只要是通过该用户登录,python版本都修改成了3.8.0。
使用pyenv global system可修改回之前的python版本
shell:只是对当前连接的shell进行的修改,不影响其他shell,关掉当前shell重新登录后失效,只要断开当前shell就失效
$ pyenv shell 3.6.6: 将当前shell使用的python版本修改程3.6.6,退出shell就失效,也不影响其他已经或将要打开的shell
local:对目录使用,即限定当前目录(及其子目录)使用的python版本,较常用
$ pyenv local 3.8.0: 进入指定目录后,将当前目录的python版本限定为3.8.0
4) virtualenv—创建虚拟环境,安全,独立,隔离性能好--常用
$ pyenv virtualenv 3.6.6 vir3.6.6 通过3.6.6版本创建虚拟环境vir3.6.6
#这种类型感觉是在3.6.6的版本下创建了一个独立的小版本,用户做的所有操作(如安装软件包,开发等)都在虚拟环境中,对3.6.6不产生影响,但又依赖于3.6.6
5) update—pyenv升级
$ pyenv update #更新pyenv版本
四.pip包管理
pip:是python中常用的软件包管理工具(安装,升级,卸载等),跟使用方法yum类似,命令也类似;通过上面环境的配置,我们查看各自目录中使用的pip其实是各自目录对应python版本的pip,截图如下:
4.1 pip常用命令:
pip --version/-V 显示当前pip版本
pip help [install] 查看install命令的帮助手册
pip install xxx yyy 安装软件包,可以指定版本进行安装
pip download xxx 下载软件包
pip uninstall xxx 卸载软件包
pip list 查看当前系统上已经安装的软件包
pip list -o 查看可升级的软件包
pip install -U pip 对pip进行升级操作
pip install --upgrade pip 对pip进行升级操作
pip search xxx 搜索软件包
pip show xxx 显示安装包信息
4.2 pip配置
$ mkdir .pip #在当前用户家目录中新建.pip目录
$ vim ~/.pip/pip.conf
[globle] index-url = https://mirrors.aliyun.com/pypi/simple trusted-host = mirrors.aliyun.com |
4.3 pip导出/安装依赖包
$ pip freeze > requirement #导出依赖包
$ pip install -r requirement #安装依赖包
原文地址:https://www.cnblogs.com/scaven-01/p/12388818.html