默认已安装pyenv,没有安装的参考:https://testerhome.com/topics/34625
pyenv介绍
pyenv是一个forked自ruby社区的简单、低调、遵循UNIX哲学的Python环境管理工具, 它可以轻松切换全局解释器版本, 同时结合vitualenv插件可以方便的管理对应的包源。
为什么我们需要pyenv呢
Python解释器版本混乱, 2和3差别巨大, 而且细分版本也不尽相同, 难以选择和管理.
不同Linux发行版自带Python不同, 如ubuntu16自带2.7和3.5版本, 其中系统许多组件依赖于自带解释器, 一旦删除或者更改都可能会造成系统出问题.
不同的Python解释器软件包管理也是问题, 如pip和ipython等必备包组件, 而且在项目开发中如何保证不同的包环境互不干扰也是一个问题.
安装python多版本
pyenv install -l
# 列出可安装的版本,会输出很多
# 等价于 pyenv install --list
pyenv install 3.6.9 -vvv
# -vvv是打印详细信息,也可不加
pyenv install 3.7.7
安装成功后,运行 pyenv versions 命令可以查看你安装的python,如下图中我安装的3.6.3
你安装的python版本位于 /usr/local/var/pyenv/versions/ 目录下。
之后你可以用global来切换你的全局python版本。
什么是virtualenv
在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的site-packages目录下。
如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?
不同的项目,每个项目都有不同的扩展类库,这些类库都统一安装在相应版本的python环境,会让他们感到很不舒服。他们更希望每个项目的环境都是独立的,纯粹的,干净的。
这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。
virtualenv用来创建独立的Python虚拟环境,可以将每个项目与其他项目独立开来,互不影响,解决了依赖包版本冲突的问题。
virtualenv 的优点
使得不同Python应用的开发环境相互独立
开发环境升级不影响其他应用的开发环境,也不会影响全局的环境(默认开发环境是全局开发环境),因为虚拟环境是将全局环境进行私有的复制,当我在虚拟环境进行 pip install 时,只会安装到选择的虚拟环境中。
它可以防止系统中出现包管理混乱和版本的冲突
virtualenv(虚拟环境)的安装
pyenv-virtualenv是pyenv的一个plugin,可以用来创建基于不同Python版本的虚拟环境。
安装pyenv-virtualenv
brew install pyenv-virtualenv
设置虚拟环境
由于不同项目,或使用不同Python版本,或使用同版本Python但使用不同版本库,很难将它们部署在一
起,所以,应该使用不同的虚拟环境隔离部署。
使用pyenv local 命令建立一个目录和一个Python版本或虚拟版本之间的关系,该目录的子孙目录默认
也继承这个版本。
设置一个python3.6.9的虚拟环境,
创建虚拟环境 语法为: pyenv virtualenv 版本号 虚拟环境名,比如创建3.6.15版本的虚拟环境
pyenv virtualenv 3.6.15 env3615
3.6.15:你之前安装的python的某个版本。
env3615:你的虚拟环境的名称。
安装后运行 pyenv versions 后可以看到你安装的虚拟环境,如下图:
env3615即为我刚刚创建的虚拟环境。
3.6.15/envs/env3.6.15为一个你的虚拟环境和3.6.15之间的一个软链接。
激活你的虚拟环境:pyenv activate env363
关闭你的虚拟环境:pyenv deactivate
删除你的虚拟环境:pyenv uninstall env363