在生产环境或者在开发过程中,一般存在多个python版本共存的局面。而直接使用python安装包安装会造成新版本覆盖旧版本的情况。为了方便管理这些python版本。pyenv就是非常好的不同python版本的下载管理工具。并与virtualenv组合创建虚拟环境。
注意,pyenv不是必须的软件,可以不装,直接跳到virtualenv安装那一步进行。
pyenv作用:可以下载和安装各种python版本。
virtualenv作用:创建好版本后,通常会在虚拟环境中使用python(避免环境冲突)。就需要用virtualenv创建环境。
1.使用PYENV创建环境
安装pyenv
1.先安装pyenv的运行环境。
sudoapt-getinstall -y build-essential libssl-dev zlib1g-dev libbz2-dev\
libreadline-dev libsqlite3-devwgetcurl llvm libncurses5-dev libncursesw5-dev\
xz-utils tk-dev libffi-dev liblzma-dev python-opensslgit
在git中有对不同运行环境安装的说明,链接在这里
2.下载pyenv
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
如果github下载不到。可以去我的gitee下git clone https://gitee.com/wei378287521/pyenv.git ~/.pyenv
我在镜像里面集成了离线包和virtualenv
Python-2.3.1
Python-2.7.7
Python-3.6.2
Python-3.9.4
3.添加pyenv到环境变量
将PYENV_ROOT和pyenv init加入bash的~/.bashrc (或zsh的~/.zshrc)
echo'export PATH=~/.pyenv/bin:$PATH'>> ~/.bashrcecho'export PYENV_ROOT=~/.pyenv'>> ~/.bashrcecho'eval "$(pyenv init -)"'>> ~/.bashrc
这一步也可以用vim直接修改。
4.激活环境变量配置
source ~/.bashrc(或zsh的`~/.zshrc`)
5.常用命令如下
pyenvinstall --list# 列出可安装版本
pyenvinstall<version># 安装对应版本
pyenvinstall -v<version># 安装对应版本,若发生错误,可以显示详细的错误信息
pyenv versions# 显示当前使用的python版本
pyenvwhich python# 显示当前python安装路径
pyenv global<version># 设置默认Python版本
pyenvlocal<version># 当前路径创建一个.python-version, 以后进入这个目录自动切换为该版本
pyenv shell<version># 当前shell的session中启用某版本,优先级高于global 及 local
我们先用pyenv install --list , 列出可安装版本,比如我要安装3.9.4
使用如下命令安装
pyenvinstall3.9.4
然后就会下载安装包
2.使用virtualenv环境的搭建
在python开发中,不同的项目会引入不同的库和配置文件,为了避免这些项目的配置互相影响。需要为每一个项目单独启动一个virtualenv虚拟环境。
重点说明:pyenv-virtualenv和virtualenv是功能相同,但是实体不同的两个软件。
1.安装pyenv-virtualenv
方法一:直接下载源码,直接运行就行
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
方法二:使用pip安装
pip install virtualenv-i https://pypi.python.org/simple/
2.创建
pyenv virtualenv3.7.0 env-3.7.0
创建的环境在pyenv目录里面,可以被需要的程序使用。类似模板
如果没有安装pyenv,则
virtualenv ENV 在当前目录下创建名为ENV的虚拟环境(如果第三方包virtualenv安装在python3下面,此时创建的虚拟环境就是基于python3的)
virtualenv-p/usr/local/bin/python2.7 ENV2 参数-p 指定python版本创建虚拟环境
virtualenv--system-site-packages ENV 参数--system-site-packages 指定创建虚拟环境时继承系统三方库
3.激活虚拟环境
pyenv activate env-3.7.0# 激活 env-3.6.4 这个虚拟环境
pyenv deactivate# 停用当前的虚拟环境
如果没有安装pyenv,则直接运行进入创建的虚拟环境目录,然后激活就行
cd~/ENV 跳转到虚拟环境的文件夹
sourcebin/activate 激活虚拟环境
piplist 查看当前虚拟环境下所安装的第三方库
deactivate 退出虚拟环境
其他操作。
# 自动激活# 使用pyenv local 虚拟环境名# 会把`虚拟环境名`写入当前目录的.python-version文件中# 关闭自动激活 -> pyenv local --unset# 启动自动激活 -> pyenv local env-3.6.4
pyenvlocal env-3.6.4
pyenv uninstall env-3.6.4# 删除 env-3.6.4 这个虚拟环境
3.补充
pyenv离线安装python程序
pyenv安装python版本的时候,常常会因为网络问题而失败,因此需要有一种离线安装的方式才行。
1.创建cache目录,这个目录是要手动创建的
mkdir ~/.pyenv/cache
2.手动下载安装的版本的python包,如pyton3.6.2版本
wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz
3.再次运行安装就可以从cache目录中找这个包来安装了
pyenvinstall3.6.2
离线包下载地址
https://www.python.org/ftp/python/