您现在所在位置: 首页 > 睿道新闻

python培训机构小知识之推荐开发用pipenv

发布时间:2020-09-11点击数:


  今日的python培训分享主要解释了为什么推荐python开发者使用Pipenv,以及如何使用Pipenv的问题,希望对大家有所帮助。


  Pipenv在仅仅一年的时间里就转变成了一个管理包依赖性的Python官方推荐资源。


  一年前,KennethReitz创建了Python开发工作流Pipenv,这个Python开发工作流已成为管理包依赖性的Python官方推荐资源。不过,与使用pip和requirements.txt文件的标准工作流相比,它能解决什么问题,如何解决这些问题仍然令人困惑。我们将在这个月的Python专栏中填补这些空白。


  简单的Python包安装历史。


  要了解Pipenv解决了什么问题,我们来看看Python包管理是如何演变的。


  当我们拥有Python时,让我们回到第一个Python版本,但是没有安装软件包的干净方法。


  还有EasyInstall,这个软件包可以相对容易地安装其他Python包,但是它也带来了一个问题:不容易卸载不需要的包。


  Python出现了,大多数Python用户都熟悉它。我们可以通过pip安装和卸载包。通过指定版本,运行pipfreeze>requirements.txt,我们可以将已安装的软件包列表输出到一个文本文件,还可以将pipinstall-rrequirements.txt与同一个文本文件一起安装应用程序需要的所有软件包。


  但pip并不包含将包彼此隔离的方法。在开发应用程序时,我们可以使用同一个库的不同版本,所以我们需要一种方法来完成这个任务。与此相伴的是虚拟环境,它可以让我们为所开发的每个应用程序创建一个小而独立的环境。在管理虚拟环境中,我们看到了很多工具:virtualenv,venv,virtualenvwrapper,pyenv,pyenv-virtualenv,pyenv-virtualenvwrapper,等等。他们都能很好的使用pip和requirements.txt文件。


  新法:皮普恩夫。


  pipenv的目标是解决以下问题:


  第一,我们需要pip库来安装这个包,再加上一个创建虚拟环境的库,还有一个管理虚拟环境的库,还有所有与这些库相关的命令。这需要加以管理。pipenv提供了包管理和虚拟环境支持,所以您可以使用一个工具安装、卸载、跟踪和记录依赖项,并创建、使用和组织虚拟环境。在您开始一个项目的时候,Pipenv会自动为这个项目创建一个虚拟环境,如果您还没有使用虚拟环境的话。


  为了实现这种依赖性管理,Pipenv放弃了requirements.txt规范,把它移到了一个名为Pipfile的新文档中。使用Pipenv安装库时,Pipfile会自动更新安装细节,包括版本信息、Git仓库位置、文件路径以及可能的其他信息。


  第二,Pipenv希望能够更轻松地处理复杂的相互依存关系。您的应用程序可能依赖于某一特定版本的库,而该库则可能依赖于另一特定版本的库,这些依赖性就像乌龟一样堆积在一起。如果您的应用程序所使用的两个库的依赖性存在冲突,那么您的情况将会非常困难。Pipenv希望通过在名为Pipfile.lock的文件中跟踪应用程序相互依存关系树,从而缓解这个问题。pipfile.lock还将验证是否在生产环境中使用了依赖项的正确版本。


  而且,Pipenv在多个开发者开发一个项目时非常方便。在pip工作流中,Casey可以安装一个库,然后花两天的时间使用这个库实现一个新功能。在Cathy提交修改时,他可能会忘记运行pipfreeze来更新requirements.txt文件。次日,JamiraceCasey换了衣服,考试突然失败。这需要花费一段时间才能意识到问题在于requirements.txt文件中缺少相关的库,Jamie还没有将它们安装到虚拟环境中。


  由于在安装时Pipenv会自动记录依赖项,所以如果Jamie和Casey使用Pipenv,Pipfile将自动更新,并将其包含在Casey的提交中。因此Jamie和Kathy可以节省时间,并且能够更快的运输他们的产品。


  最终,推荐Pipenv给您项目中的其他人,因为它采用了一种标准化的方法来安装项目依赖性以及开发和测试需求。用pip工作流和requirements.txt文件表示,您可能只有一个requirements.txt文件,或者有多个requirements.txt文件可用于不同的环境。举例来说,你的同事可能不知道当他们的笔记本电脑上正在运行一个项目时,是否应该运行dev.txt或local.txt。如果两个相似的requirements.txt文件不同步,那么这也会导致混乱:local.txt是否已经过时,或者它真的应该不同于dev.txt?要让其他人能够正确地安装依赖项,多个requirements.txt文件需要更多的上下文和文档。这种工作流程很容易混淆,同时增加您的维护负担。



  • 友情链接

关注东软睿道公众号了解更多IT行业资讯

添加东小萌微信
获取更多IT学习资源