前言
今天来给大家介绍一个工程化的知识点,pipenv。为了后续文章做铺垫,所以得先介绍一下。
在 Python 中,工程性的项目,经常是一个项目一个环境,而第三方库的更新速度非常快,所以如果不同的项目使用不同的第三库版本,此时改如何是好?
假设 A 项目中用到的是 requests 库1.0版本,而 B 项目要使用 requests 库3.0版本,这时,就需要我们用到所谓的虚拟环境了!同时这也关联到了我们常用的包管理依赖工具 pip 。
历史
直接引用一段话,已经写的很明白了:让我们回到第一个 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 等等。它们都可以很好地使用 pip 和 requirements.txt 文件。
伯乐在线
pipenv简介
pipenv 是 Kenneth Reitz 大神(requests库作者)的作品,能够有效管理 Python 多个环境,各种包。过去我们一般用 virtualenv 搭建虚拟环境,管理 Python 版本,但是跨平台的使用不太一致,且有时候处理包之间的依赖总存在问题。过去也常常用 pip进行包的管理,pip 已经足够好,但是仍然推荐 pipenv ,相当于 virtualenv 和 pip 的合体,且更加强大。pipenv 开源之后,在 GitHub 上有很高人气(截止于现在有16k+星)。
多说一句,requests 库的作者真的是大神一般的存在,曾经笔者崇拜到用他的照片做微信头像,不仅仅是因为他写的一手好代码,在背后,他还有一段非常励志的故事,后面有时间单独写一篇给大家讲讲。pipenv主要有以下特性:
(1)pipenv集成了pip,virtualenv两者的功能,且完善了两者的一些缺陷。
(2)过去用virtualenv管理requirements.txt文件可能会有问题,Pipenv使用Pipfile和Pipfile.lock,后者存放将包的依赖关系,查看依赖关系是十分方便。
(3)各个地方使用了哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞。。
(4)通过加载.env文件简化开发工作流程。
(5)支持Python2 和 Python3,在各个平台的命令都是一样的。
官网翻译
废话不多说了,用实例说话!当然再看下面的视频时,推荐先自己去官网上看下相关文章了解下大概。视频中有讲解官网怎么查看。
示例视频
第一次以视频的形式,剪辑的时候音乐有的部分衔接的不太完美,还望见谅。
pipenv简单演示教程https://www.zhihu.com/video/1102580991285202944
由于时长问题,视频里只讲解了基本操作,有些细节的地方还是需要大家自己去查阅相关的官方文档,就理解了。
总结
学习这种工具,最快的方式就是观看官网文档,以及他们给出的官方示例,自己动手实现一遍就会了。
pipenv作为管理依赖库与“虚拟环境”并存的工具,颇受市场上好评,官方据说也是强烈推荐使用!在以后的大型项目练习中,不妨多多使用 pipenv 来搭建自己的环境。
以视频的讲解,没有流量是个缺陷。。。看大家的反馈吧,希望后续文章是多以文字形式展现,还是多以视频形式展现呢?欢迎大家留言呐!
文章首发公众号~欢迎关注:migezatan。(咪哥杂谈)