为什么Python开发人员应该经常使用Pipenv
Pipenv 是由 Kenneth Reitz 在一年多前创立的“面向开发者而生的 Python 开发上班流”,它曾经成为治理软件包依赖相关的
Python 官网介绍资源
。但是关于它处置了什么疑问,以及它如何比经常使用和
requirements.txt
文件的规范上班流更有用途,这两点依然存在困惑。在本月的 Python 专栏中,咱们将填补这些空白。
Python 包装置简史
为了了解 Pipenv 所处置的疑问,看一看 Python 包治理如何开展十分有用的。
让咱们回到***个 Python 版本,这时咱们有了 Python,但是没有洁净的方法来装置软件包。
而后有了 Easy Install ,这是一个可以相对容易地装置其余 Python 包的软件包,但它也带来了一个疑问:卸载不须要的包并不容易。
退场,绝大少数 Python 用户都相熟它。可以让咱们装置和卸载包。咱们可以指定版本,运转
pip freeze > requirements.txt
来输入一个已装置包列表到一个文本文件,还可以用相反的文本文件配合
pip install -r requirements.txt
来装置一个运行程序须要的一切包。
但是并没有蕴含将软件包彼此隔离的方法。咱们或者会开发经常使用相反库的不同版本的运行程序,因此咱们须要一种方法来成功这一点。随之而来的是
虚构环境
,它使咱们能够为咱们开发的每个运行程序创立一个小型的、隔离的环境。咱们曾经看到了许多治理虚构环境的工具:
virtualenv
、、
virtualenvwrapper
、、
pyenv-virtualenv
、
pyenv-virtualenvwrapper
等等。它们都可以很好地经常使用和
requirements.txt
文件。
新方法:Pipenv
Pipenv 旨在处置几个疑问:
首先,须要库来装置包,外加一个用于创立虚构环境的库,以及用于治理虚构环境的库,再有与这些库相关的一切命令。这些都须要治理。Pipenv附带包治理和虚构环境允许,因此你可以经常使用一个工具来装置、卸载、跟踪和记载依赖性,并创立、经常使用和组织你的虚构环境。当你经常使用它启动一个名目时,假设你还没有经常使用虚构环境的话,Pipenv将智能为该名目创立一个虚构环境。
Pipenv 经过丢弃
requirements.txt
规范转而将其移动到一个名为的新文档中来成功这种依赖治理。当你经常使用 Pipenv 装置一个库时,名目标会智能更新装置细节,包括版本消息,还有或者的 Git 仓库位置、文件门路和其余消息。
其次,Pipenv宿愿能更容易地治理复杂的相互依赖相关。你的运行程序或者依赖于某个特定版本的库,而那个库或者依赖于另一个特定版本的库,这些依赖相关如海龟般重叠起来。当你的运行程序经常使用的两个库有抵触的依赖相关时,你的状况会变得很困难。Pipenv宿愿经过在一个名为
Pipfile.lock
的文件中跟踪运行程序相互依赖相关树来减轻这种痛苦。
Pipfile.lock
还会验证消费中能否经常使用了正确版本的依赖相关。
另外,当多个开发人员在开发一个名目时,Pipenv 很繁难。经过上班流,凯西或者会装置一个库,并花两天时间经常使用该库成功一个新配置。当凯西提交更改时,他或者会遗记运转来更新
requirements.txt
文件。第二天,杰米拉取凯西的扭转,测试就突然失败了。这样会破费好一会儿才干看法到疑问是在
requirements.txt
文件中缺少相关库,而杰米尚未在虚构环境中装置这些文件。
由于 Pipenv 会在装置时智能记载依赖性,假设杰米和凯西经常使用了 Pipenv,会智能更新并蕴含在凯西的提交中。这样杰米和凯西就可以节俭期间并更快地运送他们的产品。
***,将 Pipenv 介绍给在你名目上上班的其他人,由于它经常使用规范化的模式来装置名目依赖项和开发和测试的需求。经常使用上班流和
requirements.txt
文件象征着你或者只要一个
requirements.txt
文件,或针对不同环境的多个
requirements.txt
文件。例如,你的共事或者不分明他们能否应该在他们的笔记本电脑上运转名目时是运转还是。当两个相似的
requirements.txt
文件彼此不同步时它也会形成混杂:能否过期了,还是真的应该与不同?多个
requirements.txt
文件须要更多的高低文和文档,以使其他人能够依照预期正确装置依赖相关。这个上班流程有或者会混杂同时并参与你的保养累赘。
经常使用 Pipenv,它会生成,经过为你治理对不同环境的依赖相关,可以防止这些疑问。该命令将装置主名目依赖项:
参与标记将装置开发/测试的
requirements.txt
:
经常使用 Pipenv 还有其余好处:它具有更好的安保个性,以易于了解的格局绘制你的依赖相关,无缝处置文件,并且可以在一个文件中智能处置开发与消费环境的不同依赖相关。你可以在 文档 中浏览更多内容。
经常使用 Pipenv
经常使用 Pipenv 的基础常识在官网 Python 包治理教程 治理运行程序依赖相关 局部中具体引见。要装置 Pipenv,经常使用:
要装置在名目中经常使用的包,请更改为名目标目录。而后装置一个包(咱们将经常使用 Django 作为例子),运转:
你会看到一些输入,标明 Pipenv 正在为你的名目创立一个。
假设你还没有经常使用虚构环境,你还会看到 Pipenv 的一些输入,说明它正在为你创立一个虚构环境。
而后,你将看到你在装置包时常看到的输入。
为了生成
Pipfile.lock
文件,运转:
你也可以经常使用 Pipenv 运转 Python 脚本。运转名为的下层 Python 脚本:
你将在控制台中看到预期结果。
启动一个 shell,运转:
假设你想将经常使用
requirements.txt
文件的名目转换为经常使用 Pipenv,请装置 Pipenv 并运转:
这将创立一个 Pipfile 并装置指定的
requirements.txt
。思索一下更新你的名目!
了解更多
检查 Pipenv 文档,特意是 Pipenv 的基本用法 ,以协助你进一步学习。Pipenv 的创立者 Kenneth Reitz 为 Pipenv 在最近的 PyTennessee 宣布了一篇演讲:“ Python 依赖治理的未来 ”。这次演讲没有被记载上去,但他的 幻灯片 有助于了解 Pipenv 所做的以及处置的疑问。