Pip, Pipenv, Poetry or Conda——你会选择哪个?

2020年使用哪个包管理器更好?他们在给这几个东东投票,你会选哪个呢?

介绍

大多数开发人员在被引入python时,很可能pip是他们学会用来管理软件包的第一个工具。 在开发人员工作的头几年,我一直使用pip进行操作,那时直到改变之前,几乎没有其他选择。

pip

pip默认随附于python,并且使用pip安装软件包非常简单明了,


如果您需要使程序包井井有条,并且不想在用户或系统路径中安装项目包,则可能需要使用虚拟环境。


然后你需要激活它

例子(linux / unix)


然后在完成后停用


下一步将是跟踪已安装的软件包


当其他人需要在其他地方安装该项目时,这将有很大的帮助。

完成了吗 好吧,还没有,我们需要确保我们也解决依赖关系。

因此,我们可以使用pip-tools,它是pip-compile和pip-sync的组合。

因此,仅安装带有pip的软件包,您将需要4-5个步骤来实现,我认为这很麻烦。

Conda

Conda是适用于python的出色软件包管理工具,它将为您处理软件包管理和虚拟环境。

安装

您可以在MacO,Windows或Linux上安装conda。

Conda与Python无关(尽管它是用python编写的)。 与其余程序包管理器相比,最大的优势是您可以安装几乎所有安装程序,从C库到R程序包甚至是二进制文件。

用法

创建一个新的virtualenv


安装套件


我对Conda的不满意之处在于它并不是真正的最小功能,它具有许多我不使用的功能。 同样,您需要安装conda-lock来锁定程序包依赖项。 我认为应该提供主要的conda软件包。

Poetry

这是我一直以来最喜欢的终极工具之一,它真的非常好用,可以处理虚拟环境,依赖关系以及依赖关系。 此外,它还有出色的(最新的)文档。

安装

您可以在Windows,Mac或Linux上安装Poetry,请在此处检查。

用法


这将创建pyproject.toml,这是您Poetry诗歌的主要配置文件

这是一个例子


让我们安装一个软件包(例如请求)


您将看到已安装了请求,并将版本添加到pyproject.toml中,并创建了一个新文件poetry.lock,其中包含了请求包的所有依赖项。


诗歌的最大特点之一是,您可以将开发依赖项(仅用于开发(例如ipython)的依赖项)与生产依赖项区分开。


现在您将看到ipython被归类为开发依赖项


并且如果您要跳过安装开发人员依赖项(例如在生产环境中)。


无需激活/停用,只需运行它即可。


但是,如果您想在虚拟环境中获得外壳程序访问权限,则可以使用..


删除包..


更新包..


对我而言,使用诗歌的唯一缺点是它使用pyproejct.toml,如果您使用黑色格式化程序,则其配置通常也可以在pyproject.toml中处理,而且我个人不希望使用我的格式化程序和 依赖项列表位于同一位置。

Pipenv

这是我经常使用的。 就像诗一样,但我很少喜欢。

安装

如果您使用的是MacOS,则可以通过Homebrew轻松安装Pipenv:


或者,如果您使用的是Debian Buster +:


或者,如果您使用的是Fedora:


或者,如果您使用的是FreeBSD:


如果以上都不是选项:


否则,请详细查看资料(
https://pipenv.pypa.io/en/latest/#install-pipenv-today)。

用法

使用pipenv,您甚至不需要初始化任何东西。

只需将软件包直接安装在要初始化pipenv的仓库中

以安装requests 为例


您会发现添加了两个文件

Pipfile


和Pipfile.lock与所有依赖项


分离依赖项(dev和prod)..


在生产中,如果您需要安装没有开发依赖项的软件包..


如果您需要安装开发依赖项..


无需激活/停用。


如果您需要在虚拟环境中访问..


更新包..


删除包..


结论

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年7月2日
下一篇 2020年7月2日

相关推荐