查看原文
其他

你应该了解的python虚拟环境与依赖管理

咪咪怪 咪哥杂谈 2019-10-31
咪哥杂谈

pipenv

你值得拥有!


本篇阅读时间约为 9 分钟。


1

前言


今天来给大家介绍一个工程化的知识点,pipenv。为了后续文章做铺垫,所以得先介绍一下。


在 Python 中,工程性的项目,经常是一个项目一个环境,而第三方库的更新速度非常快,所以如果不同的项目使用不同的第三库版本,此时改如何是好?


假设 A 项目中用到的是 requests 库1.0版本,而 B 项目要使用 requests 库3.0版本,这时,就需要我们用到所谓的虚拟环境了!同时这也关联到了我们常用的包管理依赖工具 pip



2

历史


直接引用一段话,已经写的很明白了:


让我们回到第一个 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 文件。

伯乐在线


3

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,在各个平台的命令都是一样的。

官网翻译


废话不多说了,用实例说话!当然再看下面的视频时,推荐先自己去官网上看下相关文章了解下大概。视频中有讲解官网怎么查看。


4

示例视频


第一次以视频的形式,剪辑的时候音乐有的部分衔接的不太完美,还望见谅。



由于时长问题,视频里只讲解了基本操作,有些细节的地方还是需要大家自己去查阅相关的官方文档,就理解了。


5

总结


学习这种工具,最快的方式就是观看官网文档,以及他们给出的官方示例,自己动手实现一遍就会了。


pipenv作为管理依赖库与“虚拟环境”并存的工具,颇受市场上好评,官方据说也是强烈推荐使用!在以后的大型项目练习中,不妨多多使用 pipenv 来搭建自己的环境。



以视频的讲解,没有流量是个缺陷。。。看大家的反馈吧,希望后续文章是多以文字形式展现,还是多以视频形式展现呢?欢迎大家留言呐!


至此完!




▼往期精彩回顾▼新手必会,python中的debug调试还在用网易云音乐客户端?out了~python制作一个搜索隐藏文件的小工具


长按关注

公众号名称:咪哥杂谈

一个咪咪怪的公众号

长按二维码关注哦!


你点的每个在看,我都认真当成了喜欢


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存