Python环境管理-Pyenv与Virtualenv
Pyenv
pyenv可以帮助我们轻松地管理多个Python版本并且在其中进行切换。在官方文档中有详细的介绍,这里主要记录了在使用MacOS,同时使用zsh的情况下,pyenv的安装过程,已经相关的使用方式。
首先需要安装pyenv,在MacOS上直接使用HomeBrew进行安装即可。
1 |
|
之后需要修改配置文件,由于使用的是zsh
,因此需要执行下面的命令将相关配置添加到.zshrc
,当然也可以添加到.zprofile
配置文件中。修改完毕之后重启Shell,pyenv就安装完毕了。
1 |
|
pyenv提供简单而强大的功能,其中最常用的就是不同版本的Python安装,切换以及卸载。
首先是安装不同版本的Python,通过命令pyenv install -l
可以查看所有可供下载的Python版本,之后通过install
命令即可安装指定的版本:
1 |
|
通过命令pyenv versions
我们可以看到目前pyenv管理的版本以及当前正在使用的版本。实际上,通过pyenv下载的Python,都被存放在~/.pyenv/versions/
目录下。
之后是Python版本的切换。pyenv提供了三个命令来完成版本的切换,对应三种不同的生效层级。
1 |
|
pyenv卸载对应版本的Python也非常简单,只需要通过uninstall
命令即可。
1 |
|
Virtualenv
virtualenv是一个Python工具,能够帮助我们创建隔离的Python虚拟环境。
virtualenv推荐使用pipx进行安装,pipx可以帮助用户在一个隔离的环境中安装和运行Python应用。pipx同样可以通过HomeBrew来进行安装。
1 |
|
安装好了之后,就可以利用pipx来安装virtualenv。
1 |
|
如果由于特殊原因连接不上Python官方源,可以使用
--index-url
来临时指定一个其他的下载源。
使用虚拟环境,我们只需要关注虚拟环境的创建,管理,卸载以及依赖下载即可。
首先是环境创建,使用下面的命令即可创建一个虚拟环境。执行该命令之后,virtualenv会在当前目录下生成一个文件夹,表示生成的虚拟环境。
1 |
|
在创建虚拟环境的时候,可以指定Python版本,使用--python=pythonx.x
。但是virtualenv不会下载对应的Python版本,只会进行本地的Python发现,需要使用的Python版本需要在本地存在。此时使用pyenv进行多版本的Python管理就正中下怀。
1 |
|
环境创建之后需要激活,在Linux:
1 |
|
激活环境之后,依赖的下载正常使用pip即可。此时下载的依赖都会被存放在生成的虚拟环境中,即对应的文件夹下。
退出虚拟环境的命令如下:
1 |
|
要想删除这个虚拟环境,只需要删除对应的文件夹即可。
virtualenv结合Pycharm使用非常容易。事实上我们可以直接在Pycharm项目解释器设置中利用virtualenv创建虚拟环境,只需要指定对应的Python解释器即可。当然需要Python解释器在本地存在。
之后Pycharm会自动在当前项目目录下创建一个venv文件夹,即该项目对应的虚拟环境
Pyenv-Virtualenv
pyenv和virtualenv实际上是配合工作的,在上面的过程中我们已经可以发现这一点了。我们可以利用pyenv来管理Python的多版本,然后利用virtualenv来创建虚拟环境,在创建虚拟环境的之后指定需要使用的Python版本。
实际上,pyenv与virtualenv还有另一种配合使用的方式,即使用pyenv相关插件pyenv-virtualenv。
首先进行插件的安装:
1 |
|
之后可以使用如下命令来创建虚拟环境:
1 |
|
需要注意的是,这里使用的Python版本同样需要提前使用pyenv进行下载。执行命令之后,我们就可以通过pyenv virtualenvs
来查看所有的虚拟环境。
环境的激活和退出命令也是类似:
1 |
|
创建出的虚拟环境实际对应了两个文件夹,位置为~/.pyenv/versions/<env-name>
,以及~/.pyenv/versions/<python-version>/envs/<env-name>
。
实际上可以理解为,pyenv-virtualenv插件帮助我们管理了virtualenv创建出的虚拟环境,将其统一管理在同一个目录下。而如果我们使用原生的virtualenv进行创建,随着使用的增多,虚拟环境会散落在各个角落。当然两种方式各有利弊,按需选择即可。
推荐结合Pycharm进行虚拟环境的创建,每个Project对应一个虚拟环境venv。同时利用pyenv来管理多版本Python。