python pipenv

Pipenv是由Kenneth Reitz于一年多以前创建的“人类Python开发工作流”,现已成为管理软件包依赖关系的Python官方推荐资源 。 但是,对于使用piprequirements.txt文件的标准工作流程而言,它解决了哪些问题以及比标准工作流程更有用,仍然令人困惑。 在本月的Python专栏中,我们将填补空白。

Python软件包安装的简要历史

要了解Pipenv解决的问题,有必要展示Python软件包管理的发展方式。

回到第一个Python迭代。 我们有Python,但是没有干净的方法来安装软件包。

然后是Easy Install ,该软件包可相对轻松地安装其他Python软件包。 但这带来了一个麻烦:卸载不再需要的软件包并不容易。

输入pip ,这是大多数Python用户熟悉的。 pip让我们安装和卸载软件包。 我们可以指定版本,运行pip freeze > requirements.txt以将已安装软件包的列表输出到文本文件,并使用同一文本文件通过pip install -r requirements.txt应用程序所需的所有内容。

但是pip没有提供隔离包的方法。 我们可能会在使用相同库的不同版本的应用程序上工作,因此我们需要一种方法来启用它。 随着虚拟环境的到来,这使我们能够为我们开发的每个应用程序创建小型的隔离环境。 我们已经看到了许多用于管理虚拟环境的工具: virtualenv , venv , virtualenvwrapper , pyenv , pyenv-virtualenv , pyenv-virtualenvwrapper等等。 它们都可以与piprequirements.txt文件一起很好地播放。

新孩子:Pipenv

Pipenv旨在解决几个问题。

用于安装软件包的pip库,用于创建虚拟环境的库,用于管理虚拟环境的库,以及与这些库关联的所有命令。 要管理很多。 Pipenv附带了程序包管理和虚拟环境支持,因此您可以使用一种工具来安装,卸载,跟踪和记录依赖项,以及创建,使用和组织虚拟环境。 当您使用它启动一个项目时,Pipenv会自动为该项目创建一个虚拟环境。

Pipenv通过放弃requirements.txt规范并将其交换为名为Pipfile的新文档来完成此依赖项管理。 使用Pipenv安装库时,将使用该安装的详细信息自动更新项目的Pipfile ,其中包括版本信息以及可能的Git存储库位置,文件路径和其他信息。

其次,Pipenv希望更轻松地管理复杂的相互依赖性。 您的应用程序可能依赖于某个库的特定版本,而该库可能依赖于另一个库的特定版本,并且它一直都是依赖关系和乌龟。 当您的应用程序使用的两个库具有相互依赖的冲突时,您的生活可能会变得很艰难。 Pipenv希望通过在名为Pipfile.lock的文件中跟踪应用程序的相互依赖关系树来减轻这种痛苦。 Pipfile.lock还可以验证生产中是否使用了正确的依赖版本。

同样,当多个开发人员在一个项目上工作时,Pipenv十分方便。 通过pip工作流程,Casey可能会安装一个库,并花两天时间使用该库实施一项新功能。 当Casey提交更改时,他们可能会忘记运行pip freeze来更新需求文件。 第二天,杰米(Jamie)撤消了凯西(Casey)的更改,突然测试失败了。 需要花费时间来意识到问题是Jamie尚未在虚拟环境中安装的需求文件中缺少库。

因为Pipenv在安装依赖项时会自动记录它们的依赖关系,所以如果Jamie和Casey一直在使用Pipenv,则Pipfile将被自动更新并包含在Casey的提交中。 杰米(Jamie)和凯西(Casey)可以节省时间,并更快地交付产品。

最后,使用Pipenv向其他从事项目工作的人发出信号,表明它以标准化的方式安装了项目依赖项以及开发和测试要求。 将工作流与pip和需求文件一起使用意味着您可以拥有一个单一的requirements.txt文件,或针对不同环境的多个需求文件。 例如,您的同事可能不清楚在便携式计算机上运行项目时应运行dev.txt还是local.txt 。 当两个相似的需求文件彼此之间local.txt不同步时,它也可能造成混乱: local.txt是否local.txt过时,或者真的应该与dev.txt不同吗? 多个需求文件需要更多上下文和文档,以使其他人能够按预期正确安装依赖项。 此工作流程有可能使同事困惑并增加您的维护负担。

使用为您提供Pipfile ,可以通过为您管理不同环境的依赖性来避免这些问题。 此命令将安装主要项目依赖项:

 pipenv install 

添加--dev标签将安装dev / testing要求:

 pipenv install --dev 

使用Pipenv还有其他好处:它具有更好的安全性功能,以一种易于理解的格式绘制依赖关系图,无缝处理.env文件,并可以在一个文件中自动处理开发和生产环境的不同依赖关系。 您可以在文档中内容 。

Pipenv在行动

官方Python打包教程的“ 管理应用程序依赖项”部分详细介绍了使用Pipenv的基础知识。 要安装Pipenv,请使用pip

 pip install pipenv 

要安装要在项目中使用的软件包,请转到项目的目录。 然后安装一个包(我们将以Django为例),运行:

 pipenv install django 

您将看到一些输出,指示Pipenv正在为您的项目创建Pipfile

如果您还没有使用虚拟环境,您还将看到Pipenv的一些输出,说它正在为您创建虚拟环境。

然后,您将看到安装软件包时所使用的输出。

要生成一个Pipfile.lock文件,请运行:

 pipenv lock 

您还可以使用Pipenv运行Python脚本。 要运行名为hello.py的顶级Python脚本,请运行:

 pipenv run python hello. py 

您将在控制台中看到预期的结果。

要启动shell,请运行:

 pipenv shell 

如果要转换当前使用requirements.txt文件的项目以使用Pipenv,请安装Pipenv并运行:

 pipenv install requirements. txt 

这将创建一个Pipfile并安装指定的要求。 考虑您的项目已升级!

学到更多

查看Pipenv文档,尤其是Pipenv的基本用法 ,以使您更进一步。 Pipenv的创建者Kenneth Reitz在最近的PyTennessee活动中就Pipenv进行了主题为“ Python依赖管理的未来 ”的演讲。 谈话没有录制,但是他的幻灯片有助于理解Pipenv的功能以及解决的问题。

翻译自: https://opensource.com/article/18/2/why-python-devs-should-use-pipenv

python pipenv

python pipenv_为什么Python开发人员应该使用Pipenv相关推荐

  1. 微软的python开发工具_面向 Python 开发人员的 Azure 工具

    面向 Python 开发人员的 Azure 工具Azure tools for Python developers 08/06/2020 本文内容 Visual Studio CodeVisual S ...

  2. python简历怎么写开发_了解如何为Python开发人员制作简历

    成为一种经过认证的专业Python编程语言在过去的二十年里取得了很大的进步.随着它在数据科学.人工智能和机器学习领域的巨大贡献,它已经成为21世纪最流行的语言之一.不断增长的创新和技术进步为任何pyt ...

  3. python最佳框架_Web开发的10款最佳Python框架

    Python是当前互联网时代最流行和代码最高效的编程语言之一.杭州达内web专家建议使用Python框架快速启动Web应用. 1.CubicWeb CubicWeb的最重要的功能是其代码的可重用性,灵 ...

  4. 技术开发人员适应其他部门提需求的一个经验

    2019独角兽企业重金招聘Python工程师标准>>> 技术开发人员适应其他部门提需求的一个经验 我发现,我们很多技术人员往往无限度适应需要人员,跟着提需求人的思路走,陷入进去了. ...

  5. 70+Python项目,面向初学者、中级和经验丰富的开发人员

    建立动手项目将帮助您获得实用的编码技能.一步一步,你将把你的理论知识运用和建立一个令人印象深刻的投资组合.如果您是一名经验丰富的Python开发人员,您可能已经听说并搜索了以下问题:"对于初 ...

  6. 开发人员职位:对编程语言Python的需求明显下降

    Python目前是一门热门的编程语言,但根据招聘平台HackerRank介绍,自3月份以来,Python就业前景却有所下降. 自从三月份新冠病毒大流行以来,HackerRank平台针对Python发布 ...

  7. 献给 Python 开发人员的 25 个最佳 GitHub 代码库!

    以下为译文: 根据2020年StackOverflow开发者调查报告,Python是世界上最受欢迎的语言之一,排名仅次于Rust和TypeScript.更令人惊讶的是,Python是开发人员最想尝试的 ...

  8. 为什么我建议每个开发人员都需要学Python?不看会后悔!

    世界上只有几种编程语言提供多种功能. 在当今世界,开发人员必须能去构建各种类型的应用程序,所以多学习一种多功能开发语言是有必要的. 虽说php是世界上最好的语言,但这也不妨碍Python成为通用编程开 ...

  9. 每个开发人员都需要学Python?看看大佬是怎么说的!

    世界上只有几种编程语言提供多种功能. 在当今世界,开发人员必须能去构建各种类型的应用程序,所以多学习一种多功能开发语言是有必要的. 虽说php是世界上最好的语言,但这也不妨碍Python成为通用编程开 ...

最新文章

  1. RuntimeError: Expected object of backend CUDA but got backend CPU for argument
  2. 面试官:能说一说Mysql缓存池吗?
  3. 系列文章丨AlphaGo Zero为何如此备受瞩目?8位教授的独家讲解
  4. 本机显示服务器文本信息,打开文档显示云服务器
  5. myeclipse始终build workspace
  6. XML动态排序(1)
  7. beautifulsoup获取属性_Python爬虫常用模块:BeautifulSoup
  8. 刻画小狗状态java_JAVA面向接口编程
  9. ubuntu安装python3.6_Ubuntu上安装python3.6以及多版本python管理 | SQN
  10. VB.NET Visual Basic
  11. android gridview 滚动条位置,android-gridview单元格视图位置在滚动后发生...
  12. java int integer_浅谈java中int和Integer的区别
  13. python分位数回归模型_python – 使用StatsModels绘制二阶多项式的分位数回归
  14. C语言:一元二次方程求解
  15. CCF 201703-5 引水入城
  16. 3.7 App.vue-常用配置【uni-app教程uniapp教程(黄菊华-跨平台开发系列教程)】
  17. 华为如何不关闭进程_关闭华为手机后台程序的小技巧,终于知道了,再也不用担心内存了...
  18. 【产品经理三节课】第4章 产品调研入门
  19. 记一个ie兼容apos
  20. EPI——部分笔记 + 资源无偿分享(百度网盘)~

热门文章

  1. 关于spring cloud的几个核心组件
  2. 关于TCP协议的几个问题
  3. 浅谈分布式一致性协议之2PC
  4. 使用jQuery来实现一个简单的ajax请求
  5. java解决XSS攻击常用方法总结
  6. iis6 无法访问网站_IIS重启无效
  7. 第103天:CSS3中Flex布局(伸缩布局)详解
  8. 联动下拉框显示省市县
  9. 利用Relations实现多DataTable的聚合
  10. mysql可以用视图insert_MySql-视图操作