Python虚拟环境和依赖管理器介绍
虚拟环境。它们是什么,有什么用处?这篇文章将是Python中虚拟环境和依赖管理器的初学者指南。我们还将看看Python中五个最常用的依赖管理器。
虚拟环境是一个孤立的 Python 环境,在这个环境中,项目的依赖被安装在与系统默认的 Python 路径和其他虚拟环境中的依赖不同的目录中。
依赖管理器是能够轻松管理项目的依赖关系的工具。
虚拟环境所解决的问题
- 管理具有不同依赖性的项目。例如,当一个项目需要
Django==2.6,但另一个项目需要Django==3.0.6。 - 安装Python包和库。
- 依赖关系的解决。这是指你指定某个项目的子依赖的要求,以避免安装问题。
- 复制环境。一台机器可以处理不同环境下的许多项目。
前提条件
这篇文章假设读者
- 对Python编程语言有一定的了解。
- 在他们的机器上安装了Python。
概述
本文将介绍以下Python中最常用的虚拟环境和依赖管理器,如何使用它们以及它们的优点和缺点。
- [Venv]
- [Virtualenv]
- [Pipenv]
- [Conda]
- [诗歌]
1.Venv
Venv是一个Python的模块,用于创建轻量级的虚拟环境。它是Python 3的默认虚拟环境模块。它是创建虚拟环境的最简单的模块之一。
特点
- Python 3的默认虚拟环境工具。
- 它是一个轻量级模块。
- 在Scripts文件夹或bin子文件夹(在linux上)中存储所有的依赖关系。
安装
由于Venv已经预装在Python 3或更新的版本中,所以不需要再安装它。
所以,我们将继续创建一个虚拟环境。
创建一个虚拟环境
在Windows命令提示符上工作时,使用。
$ python3 -m venv venv
激活虚拟环境
在使用虚拟环境之前,我们需要激活它。这将使你正在工作的当前虚拟环境暂时作为默认的 Python 解释器发挥作用。
提示:在激活你的虚拟环境之前,一定要确保你是在你的项目的目录下工作。
通过运行下面的命令来激活项目的环境。
$ cd venv\Scripts
$ activate.bat
在Windows PowerShell上,使用。
$ Activate.ps1
一旦你成功地激活了你的虚拟环境,路径就会变成类似于下面的例子。
(venv) Project_path\venv\Scripts>
配置虚拟环境
激活虚拟环境后,你现在可以通过使用伟大的pip install 命令开始安装模块和包。
比如说。
$ pip install Django
你可以用下面的命令检查你所使用的Pip的版本和目录。
$ pip -V
注意:为了方便协作,经常使用requirements.txt 文件是一个很好的做法,因为它存储了环境中所有已安装软件包的列表。
要创建一个requirements.txt ,请使用。
$ python -m pip freeze > requirements.txt
停用一个虚拟环境
在你完成环境的工作后,通过使用来停用它。
$ deactivate.bat
删除虚拟环境
由于虚拟环境是独立的,当不再需要时,只需删除项目的虚拟环境目录(在这里是/venv )。
2.Virtualenv
Virtualenv是一个用于创建和管理 Python 项目的第三方依赖性管理工具。它是Python 2语言中使用最多、最流行的虚拟环境模块。
注意虚拟环境并不是Python 2的原生功能。
其缺点是
- 它不能用pip升级。
- 它不能为随机安装的Python版本创建和发现虚拟环境。
安装
为了使用Virtualenv,我们首先需要使用下面的命令来安装它。
$ pip install virtualenv
创建一个虚拟环境
要创建一个虚拟环境,运行下面的命令。
$ virtualenv venv
使用venv作为你项目的虚拟环境的名称。要激活和停用该虚拟环境,使用与Venv相同的命令。
安装依赖项
要安装额外的包和库,请使用。
$ pip install <package name>
3.Pipenv
Pipenv是一个软件包管理器,用于管理Python项目的依赖关系。它很适合使用依赖性的常见典型工作流程,如pip,requirements.txt 等。
在引擎盖下,Pipenv通常将pip和Virtualenv的使用结合到一个简单的命令行工具中。
特点
- 它自动为你的项目创建和管理一个虚拟环境。
- 它生成
Pipfile.lock文件,这有助于确定性的构建。 - 当你安装和卸载软件包时,它从Pipfile中添加和删除软件包。
- 它通过寻找
Pipfile,自动定位你的项目。 - 提供对你的依赖关系图的洞察力。试试
pipenv graph。 - 通过加载
.env文件,使开发工作流程更加顺畅。
安装
在使用Pipenv之前,让我们首先安装它。在终端上运行以下命令。
$ pip install pipenv
运行后,Pipenv将被安装在你的机器上。这里是我们现在和pip 说再见的部分。这的确是一个旅程
创建一个虚拟环境
安装完成后,我们只需要使用Pipenv安装一个Python模块,然后就可以了**!**我们有了一个虚拟环境。,我们就有了一个虚拟环境。
$ pipenv install Django==2.0.13
上面的命令在你项目的虚拟环境中自动创建了一个Pipfile 和一个Pipfile.lock 文件。这些文件是保存你的项目依赖性的地方。
如果你想改变这些依赖关系,你可以改变默认的Pipenv 配置。
激活虚拟环境
在创建了我们的虚拟环境之后,我们可以通过在项目目录中运行下面的命令来激活它。
$ pipenv shell
卸载软件包
你可以通过运行下面的命令从你的项目中卸载一个包。
$ pipenv uninstall Django
这里,你不需要指定包的版本。该包也会从Pipfile 和Pipfile.lock 文件中删除。
删除一个虚拟环境
不管出于什么原因,你觉得需要删除一个虚拟环境,你可以用Pipenv用下面的命令来做。
$ pipenv --rm
注意,使用Pipenv,你可以指定要使用的Python版本,使用下面的命令。
$ pipenv --python path/to/python
注意:你可以用Pyenv获得具体的Python版本。
4.Conda
[Conda]是一个软件包管理和环境管理系统,不仅支持Python,还支持其他语言,如Ruby、Scala、R和C/C++。它被用来在你的本地机器中创建、保存、加载和切换环境。
Conda已经预装在anaconda和miniconda中。
特点
- 你可以共享环境。
- 寻找和安装软件包 - 由于Conda也是一个环境管理器,你可以设置另一个环境来运行不同版本的Python,而不干扰运行你常用版本Python的环境。
安装
安装Conda与其他依赖管理器有点不同。安装它的最简单的方法是安装Anaconda或Miniconda--Anaconda的迷你版,只包含Conda和它的依赖项。
创建一个环境
要使用Conda创建一个虚拟环境,在终端上运行以下命令。
$ conda create --venv
激活一个环境
要激活一个环境,请运行。
conda activate venv
或者你可以在Anaconda提示符下运行以下命令。
$ activate base
停用一个环境
要停用一个虚拟环境,请运行。
$ conda deactivate
5.诗歌
[Poetry]被认为是一个功能非常丰富的Python工具,用于项目依赖性管理。它带有一个强大的CLI,用于创建和管理Python项目。
特点
- 它带有一个
pyproject.toml文件,其中包含一个tool.poetry部分,该部分由README.md、名称、作者等几个部分组成,用于项目文档。 - 它比大多数虚拟环境工具要快。
- 它允许库的声明和依赖关系的自动更新。
安装
与其他项目依赖性工具不同,Poetry带有一个自定义的安装程序,通过分离其依赖性将其与你系统的其他部分隔离。
在Windows Powershell中运行以下命令。
注意:这是安装
poetry的推荐方式。
$ (Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -
注意:即使可以用pip来安装,但不建议这样做,因为这样会与其他软件包产生更多的依赖冲突。
创建一个虚拟环境
要使用Poetry创建一个新的虚拟环境,请使用。
$ poetry new venv
这将创建一个如下所示的虚拟环境目录结构。
venv
├── pyproject.toml
├── README.rst
├── venv
│ └── __init__.py
└── tests
├── __init__.py
└── test_venv.py
激活环境
通过运行来激活虚拟环境。
$ poetry shell
或
$ source {path_to_venv}\Scripts\activate.bat
添加依赖性
要添加一个新的依赖关系,使用以下命令。
$ poetry add <package name>
或
$ poetry install <package name>
停用环境
你可以使用以下任一命令来停用一个虚拟环境。
$ exit
这个命令将虚拟环境和powerhell一起退出。
或
如果你想只退出虚拟环境,运行以下命令。
$ deactivate
总结
在创建虚拟环境时,总是尽量使用venv作为环境名称,因为它是一个全局性的约定,在忽略文件(如.gitignore )中很容易获得。
一般来说,使用虚拟环境工作是一个很好的做法,因为它们可以节省你调试常见错误的时间,比如No module error 。它们还可以使开发人员之间的协作变得容易。