用于管理虚拟环境的 Python 工具

用于管理虚拟环境的 Python 工具

用于管理虚拟环境的 Python 工具_第1张图片

 

Python 虚拟环境是“一个自包含的目录树,其中包含特定版本 Python 的 Python 安装,以及许多附加包”(来自官方文档的引用)。

提示必要的xkcd漫画:

用于管理虚拟环境的 Python 工具_第2张图片

故事的寓意:有意识地使用 Python 虚拟环境进行组织,尽量不要污染您的系统 Python 环境,否则会变得混乱。

由于潜在的混乱,已经出现了许多工具来帮助管理这些虚拟环境。本文描述并演示了一些。


  • 如何使用本指南
  • venv
    • 激活虚拟环境
    • 执行 Python 脚本
    • 停用虚拟环境
    • 使用 pip 安装软件包
    • 重新创建虚拟环境
  • 虚拟环境
    • virtualenv 安装
  • 诗歌
    • 设置诗歌虚拟环境位置
    • 与诗歌虚拟环境互动
    • 用诗歌添加包
  • Pipenv
    • 安装 Pipenv
    • 与 Pipenv 虚拟环境交互
    • 使用 Pipenv 安装包
  • Pyflow
    • 安装 Pyflow
    • 与 Pyflow 虚拟环境交互
    • 使用 Pyflow 安装包
  • pyenv-virtualenv
    • 安装pyenvpyenv-virtualenv
    • pyenv-virtualenv与虚拟环境交互
  • 康达
    • 安装康达
    • 与 Conda 虚拟环境交互
    • 使用 Conda 安装软件包
  • 孵化
    • 安装舱口盖
    • 与 Hatch 虚拟环境交互
    • 使用 Hatch 安装软件包
  • 选择哪种工具?
  • 进一步阅读

如何使用本指南

本指南涉及各种问题和受众,反映了我自己脑海中存在的声音。

  • 实际上,虚拟环境如何工作?查看摘要_venv
  • 我选择的工具如何用于管理虚拟环境?阅读完关于 后,在目录中venv找到您的工具以获得简要介绍。(或者建议我在评论中错过的工具!)
  • 有哪些工具可用于管理虚拟环境?阅读整篇文章!首先扫描目录。在评论中提出批评和建议。
  • 哪些工具适合我?可能是virtualenv,Poetry,或者可能是Conda。我在最后进行了这样的辨别。

使用venv,包含在 Python 中

旁注:该命令是本节中记录的本virtualenv机命令的“超集” 。python -m venv实际上,如果您想要 的速度和附加功能virtualenv,只需替换您在下面virtualenv看到的任何地方。python -m venv请参阅下面的 virtualenv 使用和安装说明。

值得庆幸的是,该模块venv通常pip包含在您的 Python 安装中。要在目录中创建虚拟环境.venv,请尝试以下操作:

python -m venv .venv

要进一步解析它:使用 Python 可执行文件作为您要在虚拟环境中使用的 Python 版本。这可能被称为python,如上所述,或者它可能是python3orpython3.8python3.9甚至pypy3; 你明白了。然后告诉它执行venv模块,然后是您希望虚拟环境驻留的目录的名称。如上所示,我通常使用名称.venv,或者为了提高知名度,使用venv.

应该有一个暂停,然后是一个名为的新目录.venv,您可以使用lsor看到该目录dir(在 Mac 和 Linux 上,由于.前缀,这将是不可见的,除非您使用ls -a)。您可以使用任何您喜欢的目录名称来代替.venv.

如果您看到类似“虚拟环境未成功创建,因为 ensurepip 不可用”或其他发行版荒谬的内容,请按照给出的说明或阅读如何安装pip和venv.

激活虚拟环境

现在您可以使用以下命令激活虚拟环境

source ./venv/bin/activate

或者,在 Windows 上:

.\venv\Scripts\Activate.ps1

如果不使用 Bash 或 Powershell,您可能会在./venv/binor.\venv\Scripts目录中查看 CMD、fish 或 csh 的其他选项。

激活后,命令提示符应更改为以虚拟环境目录的名称为前缀。就像是:

(.venv) [default command prompt] $

(.venv)(或任何你命名的)是你已经激活你的虚拟环境的标志。在您重新启动计算机或启动不同的 shell 或终端选项卡后,它不会保持活动状态。习惯运行激活脚本

编辑器/IDE 有时会管理甚至自动激活虚拟环境。有VSCode 说明、Atom 插件、Vim插件、Sublime插件,当然还有PyCharm。

激活后,您应该可以尝试以下操作:

(.venv) $ python
>>> import sys
>>> sys.executable
'/home/my_username/sample_python/.venv/bin/python'
>>>

查看可执行文件在您的虚拟环境目录中的位置?如果虚拟环境未激活,则sys.executable应该读取类似'/usr/bin/python'or的内容'C:\\Python38\\python.exe'

在虚拟环境中执行 Python 脚本

您可以通过两种方式执行 python 脚本:

  • 激活虚拟环境然后运行 python my_script_name.py
  • 即使没有激活,也可以使用虚拟环境的 python 运行脚本,例如 ./.venv/bin/python my_script_name.py

停用虚拟环境

要退出虚拟环境,请将其停用,如下所示:

(.venv) $ deactivate
$

简单。要重新激活,请重复上述说明。

安装东西

重新激活虚拟环境,并使用 pip 安装一些东西:

(.venv) $ pip install arrow

需要安装包和依赖项,然后您可以导入和使用该包。

您可以注销,忘记 Python,几周后再回来,然后重新激活您的虚拟环境。软件包仍将被安装。但仅限于这种虚拟环境。它不会污染您的系统 Python 环境或其他虚拟环境。

破坏虚拟环境

“我的虚拟环境无法修复,”你说?它发生了。这就是使用虚拟环境的安全性。该怎么办?

烧掉它。

rm -r .venv

全没了。希望你记得包列表(你做了一个pip freezepip list第一个得到列表,对吧?)

然后重新创建虚拟环境,如上所述。

virtualenv

virtualenv工具与python -m venv. 事实上,Python 的venv模块是基于virtualenv的。但是,使用virtualenvin place ofpython -m venv具有一些显而易见的优势:

  • virtualenv 通常比 python -m venv
  • pipsetuptools和等工具wheel通常是最新的、缓存的(因此性能提升)。术语,virtualenv这些是种子包。而且,是的,您可以添加其他种子包。

virtualenv 用法

一些不错的virtualenv命令:

  • virtualenv --help 最后会告诉你配置文件应该在哪里,以防你想设置一个通用配置
  • virtualenv --upgrade-embed-wheels会将所有种子包(如pip等)更新到最新版本。

否则,请按照上述, 的说明进行操作venv,但使用virtualenv代替python -m venv

virtualenv 安装

您可以virtualenv从包管理器的存储库中安装(例如,使用aptor dnf)。

但我强烈建议使用pipx. 请随意阅读我关于 pipx 的文章“如何安装 Python 命令行工具或脚本? ”以获得解释和说明。

安装后,您pipx应该能够:

pipx install virtualenv

诗歌

用于管理虚拟环境的 Python 工具_第3张图片

virtualenv并且venv有用且简单,做他们擅长的事情。Poetry是另一种工具,不仅可以方便地管理虚拟环境,还可以方便地管理项目和依赖项管理。

请随意阅读我使用 Poetry 管理项目的介绍,以开始使用该工具。

与Pipenv 一样,Python 文档对 Poetry 有几乎官方的几乎推荐。在管理应用程序依赖关系教程(它本身就是使用 Pipenv 的指南)中写道,我们“还应该将诗歌项目视为一种替代的依赖关系管理解决方案”。

有了那热情洋溢的背书,让我们试试诗歌吧。

诗歌装置

您可以按照我的 Poetry 介绍或官方文档来安装 Poetry。

决定诗歌在哪里放置虚拟环境

默认情况下,Poetry 有一个中心位置来安装虚拟环境。这很好,如果您不希望项目目录与虚拟环境目录混杂在一起(换句话说,如果您不希望在项目中看到venvor.venv目录)。

如果像我一样,您更喜欢传统主义者,并且希望.venv每个项目的目录中都有虚拟环境文件,请尝试以下操作:

poetry config virtualenvs.in-project true

这将全局配置诗歌这样做。

与诗歌虚拟环境互动

诗是项目管理的,所以要新建一个虚拟环境,首先创建项目目录,进入该目录:

poetry new my_project
cd my_project

第一次需要虚拟环境时,会自动创建。

激活虚拟环境:

poetry shell

要退出这个虚拟环境,用 退出exitCtrl-d或者你喜欢退出你的 shell。

无需先进入虚拟环境,您就可以使用poetry run. 例如,

poetry run python

应该在虚拟环境中为您提供 Python 提示。

用诗歌添加包

与传统方法不同,使用 Poetry,我们不应该使用pip install安装包。相反,使用poetry add.

poetry add arrow

以上将安装箭头并将其记录为pyproject.toml文件中的依赖项。

您可能会看到各种其他带有poetry help.

Pipenv

用于管理虚拟环境的 Python 工具_第4张图片

有趣的是,官方的Python“安装包”教程明确指出“直接管理多个虚拟环境会变得乏味,所以......”然后引用了 Pipenv。

尽管存在这个几乎是官方的几乎推荐,但我仍然使用它,virtualenv因为它可靠且简单,或者Poetry,因为它提供了出色的项目和依赖项管理。

也就是说,Pipenv 已经流行了一段时间,值得关注和尊重。如果你喜欢它,你有充分的理由。

安装 Pipenv

虽然Pipenv 文档建议使用 pip 或您的包管理器,但我强烈建议使用pipx来安装 Pipenv。您可以在此处阅读有关安装和使用pipx的更多信息。然后...

pipx install pipenv

与 Pipenv 的虚拟环境交互

使用 Pipenv,首先为您的项目创建一个目录很重要。(实际上,这对于任何工具都是一个不错的举措。)

第一次需要虚拟环境时,会自动创建。

激活虚拟环境:

pipenv shell

要退出这个虚拟环境,用 退出exitCtrl-d或者你喜欢退出你的 shell(如果你尝试了上面的Poetry命令,这一切应该开始感觉有点熟悉)。

无需先进入虚拟环境,您就可以使用pipenv run. 例如,

pipenv run python

应该在虚拟环境中为您提供 Python 提示。

使用 Pipenv 安装包

Pipenv不使用pip install安装包,而是使用pipenv install.

pipenv install arrow

上面将安装箭头并将其记录为Pipfile当前目录中的依赖项。

您可能会看到各种其他 Poetry 命令 pipenv -h

Pyflow

我承认我喜欢新的和闪亮的东西。在这方面有点喜鹊。

用于管理虚拟环境的 Python 工具_第5张图片

如果您向我询问使虚拟环境变得简单的推荐工具,我会询问您有关您的项目和您的愿望,然后通常建议使用virtualenv或Poetry。

但是如果你想尝试一些有点晦涩但很有希望的东西,特别是如果你处理不同版本的 Python,那么Pyflow应该很有趣。以 Poetry 为例,添加漂亮的 Python 版本管理,向conda致敬,然后用Rust编写整个东西,它看起来有点像 Pyflow。时间会证明 Pyflow 是否成熟并获得社区认可;现在,我喜欢每隔一段时间就试一试。

安装 Pyflow

要安装 Pyflow,请转到Pyflow 发布页面,然后下载并安装适合您平台的软件包。有关更多详细信息,请参阅Pyflow 的安装说明。

与 Pyflow 的虚拟环境交互

要使用 Pyflow 创建新的虚拟环境,首先创建项目:

pyflow new my_project

Pyflow 的一个独特之处:它会提示您输入 Python 版本。此外,如果您指定一个尚未安装的版本,它会以相当快速的方式为您安装它(不像pyenv那样从头开始编译)。

然后将该新目录设为当前工作目录。

cd my_project

第一次需要虚拟环境时,会自动创建。

在虚拟环境中启动 Python:

pyflow python

实际上,您可以使用pyflowcommand. 这是pyflow runcommand.

据我所知,没有一种特定于 Pyflow 的激活虚拟环境的方法。您可以像这样深入了解已安装的虚拟环境:

.\__pypackages__\3.8\.venv\Scripts\Activate.ps1

那是Windows Powershell。对于 Mac 或 Linux:

source ./__pypackages__/3.8/.venv/bin/activate

但是,我有预感这不是 Pyflow 的预期用途。相反,使用pyflowcommandor运行所有内容pyflow python

使用 Pyflow 安装包

与许多其他工具一样,您不使用 Pyflowpip install来安装包。相反,pyflow install将在虚拟环境中安装包,并将它们添加到pyproject.toml.

pyflow install arrow

这将安装箭头包。

您可能会看到各种其他带有pyflow help.

pyenv-virtualenv

如果您想用来virtualenv管理虚拟环境并同时处理多个 Python 版本,pyenv-virtualenv可能适合您。

未经请求的建议pyenv-virtualenvpyenv除非您确定确实需要它,否则不要使用(或任何其他 Python 版本管理工具)。pyenv不适用于管理虚拟环境。它管理多个版本的 Python。pyenv但是,即使您安装了多个版本的 Python ,您也可能不需要。在我的 Fedora 系统上,我只使用python3.6,python3.9等,它就可以工作。在 Windows 上,py -3.8工作py -3.7得很好。换句话说,pyenv在假设它解决了您尚未解决的任何问题之前,请仔细查看您的需求和使用情况。值得庆幸的是,如果您需要它,它就在那里。但是,如果您不这样做,请将其添加为书签以备后用,并继续愉快地编写代码。

更多不请自来的建议pyenv-virtualenv 如果您正在寻找 Python 版本和虚拟环境管理的组合,Pyflow更年轻、更时髦,而且肯定比 更快。pyenv-virtualenv不过,可能没有经过实战考验。Conda是另一种带有内置 Python 版本管理的选项。

pyenv-virtualenv 安装

pyenv-virtualenv是一个插件pyenv,所以这是一个先决条件。

要安装pyenv,请按照官方说明或仅使用自动安装程序。自动安装程序只是curl https://pyenv.run | bash

pyenv在 Windows 上不起作用。有一个 Windows 分支pyenv;但是,它似乎pyenvpyenv-virtualenv.

如果您没有使用自动安装程序,请pyenv-virtualenv按照官方pyvenv-virtualenv 说明手动安装插件。不过,一个快速提示:git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

与虚拟环境交互 pyenv-virtualenv

要使用 来创建新的虚拟环境pyenv-virtualenv,请尝试以下操作:

pyenv virtualenv 3.8.5 venv38

这将在当前目录中创建一个虚拟环境。环境中的 Python 版本将是 3.8.5,虚拟环境将有一个别名“venv38”。

如果您不确定可以pyenv使用哪些 Python 版本,请尝试

pyenv versions

和/或

pyenv install --list

看看有哪些版本,让你可以pyenv install一个。

成功创建虚拟环境后,它应该会显示在列表中:

pyenv virtualenvs

每个虚拟环境都有两个条目,一个长的,一个短的别名。

要手动激活虚拟环境,您可以使用短别名:

pyenv activate venv38

要停用:

pyenv deactivate

请注意,它确实提供了一个可选功能,当您进入一个包含有效虚拟环境名称的文件的目录pyenv-virtualenv时,它会自动激活虚拟环境。根据您的使用模式,这可能非常巧妙或非常烦人。请参阅安装说明为您的 shell 激活此功能。如果您使用了自动安装程序并按照其说明进行操作,则可能已经启用。cd.python-version

一旦您处于激活的虚拟环境中,您可以按照pip上述venv说明安装软件包。

pyenv help您可能会找到一些有关和的命令行帮助pyenv help virtualenv

康达

用于管理虚拟环境的 Python 工具_第6张图片

Conda不仅仅是另一个 Python 包或环境管理器;它是一个替代的 Python 生态系统。conda的包存储库不同于大多数包/项目经理使用的PyPI 存储库。Conda repo 有大约 1500 个包。PyPI 存储库有大约 150,000 个。也就是说,如果您需要的话, Conda 可以与 pip 一起使用。

安装康达

如果您想要一个包含大型厨房水槽的 Python 和所有科学工具安装,请查看Anaconda。但是,这是与本文中其他工具的苹果与橙色比较。更合适的是miniconda。Miniconda 提供了conda命令行工具以及入门所需的依赖项。这就是我通常需要的。如果您不确定哪一个适合您,Anaconda 或 miniconda,有一个有用的比较。

要安装 miniconda,请为您找到相关的安装程序,下载并实现它。您的包管理器(aptdnfbrew等)也有可能拥有 Conda。

在我的一个 linux 安装中,我还需要首先配置 Conda 以使用我的 shell。当我使用 Bash 时,我这样做了:

conda init bash
conda config --set auto_activate_base false

第一个向您的.bashrc文件添加功能,包括“基本”Conda 环境的自动激活。我并不总是需要 Conda,所以这对我来说并不好。因此,第二行在~/.condarc您的主目录中添加了一个文件,其中包含该设置。

与 Conda 虚拟环境交互

要创建新的虚拟环境,请指定要使用的虚拟环境的名称(可以是任何名称),以及可选(但推荐)python 版本:

conda create --name env38 python=3.8.5

创建后,您可以使用以下命令激活虚拟环境

conda activate env38

确保您指定了之前选择的虚拟环境名称。

停用虚拟环境

conda deactivate

无论 shell 或平台如何,and 命令的工作方式都是一样的conda activateconda deactivate好的!

使用 Conda 安装软件包

要使用 Conda 安装软件包,请使用conda install并确保您已使用 激活虚拟环境conda activate

conda install arrow

以上将安装“箭头”包。关于 Conda 的一件很酷的事情:它会准确地告诉你它将在哪里做什么。因此,您可以确定它是在虚拟环境(以及哪个)或系统范围内安装软件包。康达很健谈,我喜欢这一点。

孵化

Hatch有点像Pyflow,因为它很时髦(pyproject.toml例如使用)、晦涩难懂,并且可以做很多事情。它肯定是我见过的用于预填充测试的最自信的工具。

安装舱口盖

我建议使用pipx安装 Hatch。您可以阅读我在 pipx 上的文章“如何安装 Python 命令行工具或脚本? ”以获得解释和说明。

pipx install hatch

与 Hatch 的虚拟环境交互

要使用 Hatch 创建新的虚拟环境,首先创建项目:

hatch new my_project

注意:Hatch 可以使用Conda来管理 Python 版本。事实上,hatch conda将 miniconda 安装到您选择的位置。如果您以这种方式安装了 miniconda,则可以使用类似hatch new -py 3.8.5 my_project指定 Python 版本的方法。

hatch new自动创建虚拟环境。您可以使该新目录成为当前工作目录。

cd my_project

然后使用hatch shell进入虚拟环境。您应该能够从新的 shell 启动 Python 等。

要退出这个虚拟环境,用 退出exitCtrl-d或者你喜欢退出你的 shell。

使用 Hatch 安装软件包

与许多其他工具一样,您不使用 Hatchpip install来安装软件包。相反,hatch install将在虚拟环境中安装软件包。

hatch install arrow

这将安装“箭头”包。

主动投诉:我承认,令我彻底困惑的是,此时 Hatch 似乎没有更新任何可能的嫌疑人:pyproject.tomlsetup.pyrequirements.txt。我怀疑这是设计使然:用户必须经过深思熟虑并手动将包添加到正确的位置。我想哪个位置正确取决于您。

您可能会看到各种其他带有hatch -h.

选择哪种工具?

选择工具实际上是一个主观问题。你是谁,你用 Python 做什么,你的需求/愿望是什么?

如果对Python有兴趣,想了解更多的Python以及AIoT知识,解决测试问题,以及入门指导,帮你解决学习Python中遇到的困惑,我们这里有技术高手。如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己Python方面学的不够精想要继续学习的,想转行怕学不会的, 都可以加入我们,可领取最新Python大厂面试资料和Python爬虫、人工智能、学习资料!微信公众号【Python大本营】等你来玩奥~

你可能感兴趣的:(python,开发语言,后端)