Python | Pipenv官方推荐的python包管理工具

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)

原文发表时间:2018-10-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏叔叔的博客

SpringCloud服务比较快的下线配置

一、前言 想实现热部署,需要服务很快的上下线,所以需要修改相关配置。 二、配置 Eureka Server配置 # eureka server刷新readCac...

1.3K6
来自专栏Albert陈凯

Hadoop数据分析平台实战——160Sqoop介绍离线数据分析平台实战——160Sqoop介绍

离线数据分析平台实战——160Sqoop介绍 Sqoop介绍 Apache Sqoop(SQL-to-Hadoop) 是一款开源的工具,主要用于在Hadoop(...

3175
来自专栏Linux运维学习之路

企业级memcached缓存数据库结合php使用与web管理memcached

环境 [root@cache01 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Cor...

2676
来自专栏JadePeng的技术博客

Spring Boot配置文件放在jar外部

Spring Boot程序默认从application.properties或者application.yaml读取配置,如何将配置信息外置,方便配置呢? 查询...

7056
来自专栏运维技术迷

连仕彤博客yum报错:No module named gzip解决

起因 小威wei yum update了一把,结果yum就报错了,Python版本并没有升级,依然是2.7.5版本。 报错信息 [root@localhost ...

4044
来自专栏Java成神之路

Eclipse_插件_04_热部署_JRebel

2.史上最强插件 -- 热部署JRebel(支持Eclipse、Intellij IDEA)

1054
来自专栏Fortress的专栏

ELK 集群,腾讯云上的日志监控不用愁

公司项目,越来越多的系统在计划上云。如何监控云上的系统运行,是每个系统上云的过程中都会碰到的一个问题。在这里,我们以公司的某个项目为例,向大家详细阐述该项目上云...

1.4K2
来自专栏Java技术分享

集群分片

 由于复制中,每个数据库都是拥有完整的数据,因此复制的总数据存储量受限于内存最小的数据库节点,如果数据量过大,复制就无能为力了。

2349
来自专栏不想当开发的产品不是好测试

jenkins 后台程序运行

# 背景 jenkins持续集成,需要任务后台执行(nohup执行)结果发现jenkins的job执行完后,看不到运行的进程 # 步骤 原因就是这么一个情况:J...

3495
来自专栏桥路_大数据

使用flume搭建日志收集系统

3058

扫码关注云+社区

领取腾讯云代金券