原文地址:https://cloud.tencent.com/developer/article/1355672

Pipenv - 官方推荐的的python包管理工具。

Pipenv是一款旨在将所有包管理工具(如bundler, composer, npm, cargo, yarn等)的优点集中应用于python领域中的工具。它对各个平台都有很好的支持。

它可以为你的项目自动创建和管理虚拟环境,并且在你安装/删除包时自动在Pipfile中添加/移除相应的包。它同时生成一个非常重要的Pipfile.lock文件,来保证所构建环境的确定性。

Pipenv想要解决的问题是多方面的:

  • 你不需要再分别使用pipvirtualenv,在Pipenv中他们一起工作
  • 管理一个requirements.txt文件会产生很多问题,所以Pipenv用后面会出现的PipfilePipfile.lock将其代替,这在实际例子中效果会更好。
  • 为了安全性,哈希在多处被使用。自动公开安全漏洞。
  • 让你通过图形深入了解当前的依赖关系($ pipenv graph
  • 通过加载 .env 文件简化开发流程

安装

Windows环境:

$ pip install pipenv

如果你使用的是macOS,你可以使用Homebrew安装:

$ brew install pipenv

特性

  • 容易的实现确定性构建,同时可轻易地指定你想要的内容
  • 在锁定依赖项时,生成并检查文件的哈希
  • 如果pyenv可用,自动安装所需要的Python
  • 通过查找Pipfile,递归的自动查找你的项目
  • 如果Pipfile不存在,则自动生成一个
  • 在标准地址自动创建一个虚拟环境
  • 当包被安装或者删除时,自动在Pipfile中修改。
  • 如果 .env 文件存在,则自动载入

主要命令包括 installuninstall,以及lock(生成Pipfile.lock)。这些命令可以替代$ pip install使用以及对虚拟环境的手动管理(激活虚拟环境,只需运行$ pipenv shell

基本概念

  • 当虚拟环境不存在时,会自动创建一个
  • 当没有参数传给 install 时,将安装所有指定的包
  • 通过 $ pipenv --three,初始化一个Python3的虚拟环境
  • 通过$ pipenv --two,初始化一个Python2的虚拟环境
  • 其他命令下生成的虚拟环境都是默认设置

其他命令

  • shell 命令会生成一个激活了虚拟环境的shell
  • run 将运行输入到虚拟环境的命令,并转发所有参数(e.g. $ pipenv run python
  • check 确定当前环境满足PEP 508的要求
  • graph 将输出一个包含当前所有已安装依赖的漂亮图形

Shell 补全

举个例子,使用fish shell,将下列命令加入~/.config/fish/completions/pipenv.fish:

eval (pipenv --completion)

另外,也可以使用bash,将下列代码加入 .bashrc 或者 .bash_profile

eval "$(pipenv --completion)"

神奇的shell补全功能现在已经可以使用了!(Fish 是最好的shell,你应该使用它)

应用

定位项目

定位虚拟环境

定位Python解释器

安装包

安装一个开发环境依赖

展示一个依赖图:

生成一个lockfile

安装所有开发依赖

卸载全部

使用shell:

原文发布于微信公众号 - Python专栏(xpchuiit)

Python | Pipenv官方推荐的python包管理工具的更多相关文章

  1. Python包管理工具小结

    此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 作为一名接触Python有一段时间的初学者,越来越体会到Python的方便之处,它使人能更 多的关注业务本身 ...

  2. Python 包管理工具 pip 与 conda

    简介 pip是接触 python 后最早认识的包管理工具.通过使用 pip 能够自动下载和解决不同 python 模块的依赖问题,使 python 的配置过程变得简单. 与 pip 类似,conda ...

  3. Golang学习--包管理工具glide

    上一篇文章中我们已经成功的运行了go的代码,这是我们迈出的最基础的一步. 一个项目通常会依赖很多外部的库,当依赖的库比较多的时候,手工管理就会比较麻烦,这个时候就需要包管理工具出场了,帮你管理好所有依 ...

  4. glide包管理工具

    上一篇文章中我们已经成功的运行了go的代码,这是我们迈出的最基础的一步. 一个项目通常会依赖很多外部的库,当依赖的库比较多的时候,手工管理就会比较麻烦,这个时候就需要包管理工具出场了,帮你管理好所有依 ...

  5. 包管理工具Carthage使用

    iOS项目中第三方开源库的工具有Cocoapods和Carthage,swift官方出了一个包管理工具SPM(Swift Package Manager). 首先,大体讲一下Cocoapods和Car ...

  6. python版本管理工具pyenv和包管理工具pipenv

    一.pyenv版本管理工具 pyenv是一个python版本管理工具,可以实现轻松切换多个python版本 它可根据每个用户更改全局python版本,也可以为每个项目指定python版本,还可以管理v ...

  7. Python黑帽编程1.3 Python运行时与包管理工具

    Python黑帽编程1.3  Python运行时与包管理工具 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...

  8. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  9. python包管理工具他们之间的关系

    python包管理工具之间的关系 现在的python包管理工具有很多,非常混乱,必须理清他们之间的关系才能更好的使用python构建强大的包关系系统工具. 首先:python官方推荐的第三方库是PyP ...

随机推荐

  1. HDFS之安全模式

    1.namenode启动的时候,首先将映像文件[fsimage]载入内存,并执行编辑日志[edits]中的各项操作. 2.一旦在内存中成功建立文件系统元数据的映射,则创建一个新的fsimage文件[这 ...

  2. scrapy 爬虫中间件-offsite和refer中间件

    环境使用anaconda 创建的pyithon3.6环境 mac下 source activate python36 mac@macdeMacBook-Pro:~$ source activate p ...

  3. Eclipse经常出现未响应问题

    修改eclipse.ini文件 -startupplugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar--launcher.libr ...

  4. C++(五十一) — 容器中常见算法(查找、排序、拷贝替换)

    1.find(); find()算法的作用是在指定的一段序列中查找某个数,包含三个参数,前两个参数是表示元素范围的迭代器,第三个参数是要查找的值. 例:fing(vec.begin(), vec.en ...

  5. 洛谷 P2921 在农场万圣节Trick or Treat on the Farm题解

    题意翻译 题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定 ...

  6. 使用mybatis框架实现带条件查询-多条件(传入实体类)

    在实际的项目开发中,使用mybatis框架查询的时候,不可能是只有一个条件的,大部分情况下是有多个条件的,那么多个条件应该怎样传入参数: 思考:  需求:根据用户姓名(模糊查询),和用户角色对用户表进 ...

  7. 手写队列以及stl中队列的使用

    一,手写队列. struct queue { ; ,rear=,a[maxn]; void push(int x) { a[++rear]=x; } void pop() { first++; } i ...

  8. AJax的三种响应

    AJax的响应 1.普通文本方式(字符串) resp.getWriter().print("你好"); 2.JSON格式当要给前台页面传输 集合或者对象时 使用普通文本传输的时St ...

  9. file 的类型 input

    上传你选择的文件和相关信息.在 HTML 文档中 <input type="file"> 标签每出现一次,一个 FileUpload 对象就会被创建.该元素包含一个文本 ...

  10. 如何把上传图片时候的文件对象转换为图片的url !

    getObjectURL(file) { var url = null; if (window.createObjectURL != undefined) { url = window.createO ...