让我们先思考这样一种情景:我们用python来开发一个项目,那么这个项目肯定会依赖很多的第三方库,这些第三方的库通过pip安装到全局区当中,而对于不同的项目使用到的库可能都有所不同,但是这些项目的库都安装到全局区当中,是不是非常不便于管理。
我们可不可以做到像java的project一样有自己的工程,让这个工程下的所有依赖库都装到自己工程的相应目录下呢?答案是可以,实现这个场景就需要用到我们今天所讲解的这个python虚拟环境工具virtualenv。其官网为:地址 ,感兴趣的朋友可以去了解一下。
目录
这里我拿window举例,cmd终端执行如下命令安装virtualenv工具:
pip install virtualenv
接下来需要安装虚拟环境管理包工具virtualenvwrapper-win,终端执行如下命令:
pip install virtualenvwrapper-win
出现如下界面说明我们安装成功:
安装完成之后,验证我们是否可以使用 virtualenv 工具,可以终端运行 virtualenv --help 查看一下
接下来我们需要配置一下virtualenv创建虚拟环境生成的根目录,修改其默认路径,如果不修改路径的话,当我们cmd终端创建virtualenv虚拟环境的时候默认是生成在C盘目录下的:
在我的电脑->右键->属性->高级系统设置->环境变量->系统变量 中添加一个参数,将这个参数的值设置为你需要的路径,之后创建的虚拟环境的文件都在这个家目录下,如下:(WORKON_HOME)
如果出现?‘mkvirtualenv‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件,应该是配置环境变量出现了问题,需要在环境变量中加入python的安装目录下的的Scripts添加到环境变量中。
接下来我们开始借助virtualenv虚拟环境创建工具进行一个简单的使用,如下:
创建虚拟环境:终端执行如下命令开始创建虚拟环境:
mkvirtualenv 虚拟环境名称
接下来我们终端执行了 mkvirtualenv test 出现了如下界面说明我们创建虚拟环境成功:
我们可以看到我们在环境配置步骤设置的环境存放路径是正确的:
当然我们创建虚拟环境时也可以指定python版本:
mkvirtualenv -p python解释器路径 虚拟环境名称
mkvirtualenv -p C:User/python.exe django_env
# 也可以采用如下方式
mkvirtualenv --python==python解释器路径 虚拟环境名称
查看所有的虚拟环境:终端执行如下命令查看已创建的虚拟环境:
workon
切换虚拟环境目录: 终端执行如下命令切换到具体虚拟环境的目录:
workon 虚拟环境名称
退出虚拟环境:终端执行如下命令退出虚拟环境:
deactivate
删除虚拟环境:终端执行如下命令删除虚拟环境(必须先退出虚拟环境内部才能删除当前虚拟环境)
rmvirtualenv 虚拟环境名称
进入到虚拟环境所在的目录:终端执行如下命令进入到相关目录:
cdvirtualenv 虚拟环境名称
虚拟环境安装的包与全局安装的包是相互独立分开的,接下来简单的介绍一下虚拟环境中的安包操作,如下:
查看全局或虚拟环境安装的包:
pip list
如果想把全局安装的包下载到虚拟环境当中,可以采用如下操作的方式:
首先我们回到正常环境当中,收集当前环境安装的全局的包及其版本信息:
pip freeze > requirements.txt
然后我们可以在我们c盘的目录下找到我们生成好的文件,里面有我们全局的包的信息及其对应的版本:
回到我们部署的虚拟环境当中执行如下安装命令,将txt所有的包信息安装到虚拟环境当中去:
pip install -r requirements.txt
既然我们已经创建好了虚拟环境了,也知道怎么使用了,那么如何在编辑器中进行使用呢?如下我们开始讲解如何在pycharm开发者工具中使用我们的虚拟环境:
点击创建之后我们看看我们虚拟环境创建的py项目能不能运行,如下,没毛病:
接下来我们拿虚拟环境当中的安装包与原环境进行一个对比,看到虚拟环境的包更加透彻清晰是吧(啥也没有):
至此,我们对于 virtualenv 安装使用讲解完成,提一嘴:
pyenv-win 也提供了类似于 virtualenv 创建虚拟环境的功能。在 pyenv-win 中,这个功能被称为 Virtual Environments。
使用 pyenv-win 的 Virtual Environments 功能,你可以创建和管理独立的 Python 环境,这与 virtualenv 的功能非常相似。但是,与 virtualenv 不同的是,pyenv-win 的 Virtual Environments 是基于不同的 Python 版本创建的,而 virtualenv 则是基于同一 Python 版本的不同虚拟环境。
对于使用 pyenv-win 的开发人员来说,使用 Virtual Environments 来创建和管理 Python 环境可能更加方便,因为它们可以轻松地切换不同版本的 Python 解释器,并在其中创建多个独立的虚拟环境。但是,如果你想要与其他开发人员共享代码或使用一些第三方库,那么 virtualenv 可能是更好的选择。如果想学习 pyenv-win 可以参考我之前的文章:地址 。