一年时间,Pipenv就成为Python官方推荐的顶级工具?
Pipenv是Kenneth Reitz在一年多前创建的“面向程序员的Python开发工作流程”,现在已成为管理软件包依赖关系的Python官方推荐资源。
Python软件包安装管理的简要历史
为了正确理解Pipenv解决的问题,有必要了解Python软件包管理的发展历史。
起初,我们有Python,但没有干净的方式来安装软件包。
然后,Easy Install出现了,它是一个可以相对容易安装Python软件包的工具。但它带来了一个问题:卸载不需要的软件包并不容易。
后来,大多数Python用户熟悉使用pip命令安装和卸载软件包。用户可以指定版本,运行pip freeze> requirements.txt将已安装软件包的列表输出到文本文件,并使用相同的文本文件pip install -r requirements.txt命令安装所需的应用程序。
但是,pip并不能将软件包彼此隔离。用户可能会使用不同版本的相同库的应用程序,因此我们需要一种方法来启用它。随着虚拟环境的发展,我们为每个应用程序创建了小型,孤立的环境。我们已经看到许多用于管理虚拟环境的工具:virtualenv,venv,virtualenvwrapper,pyenv,pyenv-virtualenv,pyenv-virtualenvwrapper等等。它们都可以在pip和requirements.txt文件中很好地发挥作用。
Pipenv能干什么?
Pipenv旨在解决几个问题。
首先,需要用于软件包安装的库、用于创建虚拟环境的库、用于管理虚拟环境的库以及与这些库相关的所有命令。Pipenv提供包管理和虚拟环境支持,用户可以使用一种工具来安装,卸载,跟踪和记录依赖关系以及创建,使用和组织虚拟环境。当你用它开始一个项目时,如果你还没有使用Pipenv,Pipenv会自动为该项目创建一个虚拟环境。
Pipenv通过放弃therequirements.txt规范转而使用称为Pipfile的新文档来完成此依赖性管理。当使用Pipenv安装库时,项目的Pipfile会自动更新,包括版本信息以及可能的Git存储库位置,文件路径和其他信息。
其次,Pipenv可以更容易管理复杂的相互依赖关系。假设,你的应用程序可能依赖于特定版本的库,并且该库可能依赖于另一个特定版本的库。当应用使用的两个库具有相互冲突的依赖关系时,你的生活会变得艰难。Pipenv通过名为Pipfile.lock的文件中跟踪应用程序相互依赖关系的树来减轻这种痛苦。Pipfile.lock还会验证生产中是否使用了正确版本的依赖关系。
另外,Pipenv在多个开发人员协同开发项目时非常方便。由于Pipenv会在安装软件包时自动记录依赖关系,所有人都能够按照预期正确安装依赖关系,开发人员可以节省时间并更快地开发产品。
此外,Pipenv具有更好的安全特性,以易于理解的格式绘制依赖关系图,无缝处理.env文件,并且可以在一个文件中自动处理开发与生产环境的不同依赖关系。
使用Pipenv的基础知识详见官方Python教程的管理应用程序依赖关系部分。总之,一年时间,Pipenv就成长为Python官方推荐的顶级资源一定有其优势所在,所有Python程序员不妨在评论区留下自己对Pipenv的看法。
一年时间,Pipenv就成为Python官方推荐的顶级工具?的更多相关文章
- Python 官方推荐的一款打包工具
译者:Jiong 链接: https://robots.thoughtbot.com/how-to-manage-your-python-projects-with-pipenv 在thoughtbo ...
- python官方推荐的各阶段学习书籍
Python学习交流群:463024091,群内每天分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎各位小伙伴入群学习交流! 你是否曾经学期初立下一大堆学习计划,到期末却依旧过着 ...
- MongoDB官方推荐的GUI工具-Compass的使用
探索和操作MongoDB数据的最简单方法 用于MongoDB的GUI.可视化地查看数据.以秒为单位运行临时查询.使用完整的CRUD功能与数据交互.查看和优化查询性能.可在Linux.Mac或Windo ...
- Python | Pipenv官方推荐的python包管理工具
原文地址:https://cloud.tencent.com/developer/article/1355672 Pipenv - 官方推荐的的python包管理工具. Pipenv是一款旨在将所有包 ...
- Python 官方中文教程(简)
Python 官方教程 前言 这是一次系统学习Python官方教程的学习笔记 整个教程一共16章, 在学习过程中记录自己不知道的和一些重要的知识, 水平有限, 请指正. Python3.7 官方教程. ...
- Python 官方团队在打包项目中踩过的坑
花下猫语:这是 packaging 系列的第三篇译文,该系列是全网关于此话题的最详尽(水平也很高)的一个系列.原作者是 Python 官方打包团队成员,是 virtualenv 和 tox 项目的维护 ...
- 不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8
不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8 简介:为什么要强调 书写规范 ?这其实并不关乎"美丑",而是为了 更高的效率(代码阅读.开发.维护 ...
- 2018-04-27 搭建Python官方文档翻译环境-汉化示例代码
通过官方i18n流程, 实现文档中的代码段的汉化, 效果如下(4. More Control Flow Tools): 步骤 基于python官方3.6版文档cpython/Doc生成pot文件. 参 ...
- 基于 Python 官方 GitHub 构建 Python 文档
最近在学 Python,所以总是在看 Python 的官方文档, https://docs.python.org/2/ 因为祖传基因的影响,我总是喜欢把这些文档保存到本地,不过 Python 的文档实 ...
随机推荐
- 热点 | 四月最佳Github项目库与最有趣Reddit热点讨论
来源:Analytics Vidhya 编译:磐石 [磐创AI导读]:Github是全球最大的开源代码社区,Reddit是最受大家欢迎的热点讨论交流平台.接下来磐创AI将为大家带来四月份Github最 ...
- java新时间类
时间 java8以前使用的时间很多方法都已经废弃了,而且不是线程安全的,java8提供了一系列的时间类,这些时间类都是线程安全的 LocalDate.LocalTime.LocalDateTime 这 ...
- WeChat-SmallProgram:组件 scroll-view 横向和纵向 案例
scroll-view为滚动视图,分为水平滚动和垂直滚动.注意滚动视图垂直滚动时一定要设置高度否则的话scroll-view不会生效. 滚动视图常用的地方一般都是Item项比较多的界面,比如我的模块 ...
- coding++:SpringBoot 处理前台字符串日期自动转换成后台date类型的三种办法
第(1)种: 使用@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”)注解在实体字段上. 这种方式的优点是:可以灵活的定义接收的类型 缺点很明显:不能全局统 ...
- 数据库(sqlserver 2005)优化排查之路
查找问题过程是痛苦的,解决完问题是快乐! 兄弟帮助一个公司开发了一个旅游网站(asp.net+sqlsever2005),一直还算稳定,但是最近网站却慢的可以,让人头疼.登录服务器,进入任务管理器,发 ...
- iOS isEqual
如何重写 hash 方法 一个合理的 hash 方法要尽量让 hash 表中的元素均匀分布,来保证较高的查询性能. 如果两个对象可以被视为同一个对象,那么他们的 hash 值要一样. mattt 在文 ...
- 【杂谈】SpringBoot为啥不用配置启动类
前言 在学习SparkJava.Vert.x等轻量级Web框架的时候,都遇到过打包问题,这两个框架打包的时候都需要添加额外的Maven配置,并指定启动类才能得到可执行的JAR包: 而springboo ...
- 前端经典面试题解密:JS的new关键字都干了什么?
前言 new关键字在实例化获取对象时都做了什么?是一道经常出现在前端面试时的问题.如果只是简单的了解new关键字是实例化构造函数获取对象,是万万不能够的.更深入的层级发生了什么呢?同时面试官想从这道题 ...
- Codeforces Round #629 (Div. 3)
A. Divisibility Problem time limit per test 1 second memory limit per test 256 megabytes input stand ...
- 如何将MagicaVoxel模型导入UE4中(2)
前言 当可以把MagicaVoxel的静态模型导入到UE4后,我又开始不满足了.默认第三人称蓝图的"汽车碰撞人偶(雾)"与场景中的体素画风格格不入,于是,我便想着用自己建造的体素画 ...