GitHub:pypa/pipenv: Python Development Workflow for Humans. (github.com)

介绍:

pipenv就是把pip和virtualenv包装起来的一个便携工具,它会自动为您的项目创建和管理virtualenv,以及在安装/卸载软件包时添加/删除Pipfile中的软件包。

使用pipenv管理python环境虚拟环境的优势:

  不再需要分开使用pip和virtualenv,合并到了一起
  不再需要管理requirements.txt,pipenv install xxx安装包时自动生成版本号、Hash值、包依赖关系到Pipfile和Pipfile.lock,并且可以手工编辑以区分开发环境和生产环境
  使用Hash校验安装的包,有利于主动暴露安全问题
  使用最新版本的依赖项,以最大限度地降低过时组件带来的安全风险
  可以图形化显示包之间的依赖关系(pipenv graph)
  通过加载.env文件简化开发工作流程

安装:

前提: 已经成功安装了python与pip

linux:
pip3 install pipenv mac:
brew install pipenv

pipenv依赖psutil, virtualenv-clone, pew, certifi, urllib3, chardet, requests, mccabe, pyflakes, pycodestyle, flake8等第三方模块,pipenv有很漂亮的彩色终端界面。

安装成功之后,会生成两个文件:Pipfile和 Pipfile.lock

文件说明:

  Pipfile:显示项目环境和依赖包

[[source]]
name = "pypi"
url = "https://mirrors.aliyun.com/pypi/simple/" # 指定国内pip源,不然会慢死人的
verify_ssl = true [dev-packages] # 开发环境 [packages] # 生产环境
requests = "*" # *表示最新版本
django = "*" [requires]
python_version = "3.7" # python版本

  Pipfile.lock:详细记录环境依赖, 并利用hash算法保证他完整对应关系

{
"_meta": {
"hash": {
"sha256": "d737a1ef2f8b591f86cd0fa6a8cb48918f742d60df2a394ebc3d23aff4748999"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.7"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.org/simple",
"verify_ssl": true
}
]
},
"default": {
"certifi": {
"hashes": [
"sha256:47f9c83ef4c0c621eaef743f133f09fa8a74a9b75f037e8624f83bd1b6626cb7",
"sha256:993f830721089fef441cdfeb4b2c8c9df86f0c63239f06bd025a76a7daddb033"
],
"version": "==2018.11.29"
},
"chardet": {
"hashes": [
"sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae",
"sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"
],
"version": "==3.0.4"
},
"django": {
"hashes": [
"sha256:a32c22af23634e1d11425574dce756098e015a165be02e4690179889b207c7a8",
"sha256:d6393918da830530a9516bbbcbf7f1214c3d733738779f06b0f649f49cc698c3"
],
"index": "pypi",
"version": "==2.1.5"
},
"idna": {
"hashes": [
"sha256:c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407",
"sha256:ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c"
],
"version": "==2.8"
},
"pytz": {
"hashes": [
"sha256:32b0891edff07e28efe91284ed9c31e123d84bea3fd98e1f72be2508f43ef8d9",
"sha256:d5f05e487007e29e03409f9398d074e158d920d36eb82eaf66fb1136b0c5374c"
],
"version": "==2018.9"
},
"requests": {
"hashes": [
"sha256:502a824f31acdacb3a35b6690b5fbf0bc41d63a24a45c4004352b0242707598e",
"sha256:7bf2a778576d825600030a110f3c0e3e8edc51dfaafe1c146e39a2027784957b"
],
"index": "pypi",
"version": "==2.21.0"
},
"urllib3": {
"hashes": [
"sha256:61bf29cada3fc2fbefad4fdf059ea4bd1b4a86d2b6d15e1c7c0b582b9752fe39",
"sha256:de9529817c93f27c8ccbfead6985011db27bd0ddfcdb2d86f3f663385c6a9c22"
],
"version": "==1.24.1"
}
},
"develop": {}
}

使用方式:

pipenv install requests
安装包 pipenv --python 3.7 指定某个python版本
pipenv --python <path/to/python> 指定某个python路径 进入虚拟环境:
pipenv shell 退出虚拟环境:
exit
注意:不要使用deactivate, 否则下次进入的时候 就会发生报错 删除虚拟环境:
pipenv --rm

注意点:

  • 平时安装和卸载包的时候不需要先进入或退出虚拟环境,直接在项目文件下pipenv install/uninstall xxx就行了
  • 退出虚拟环境不要deactivate,请使用exit,否则下次pipenv进入的时候就会报如下错
[root@shiyanlou myproject]# pipenv shell
Shell for UNKNOWN_VIRTUAL_ENVIRONMENT already activated.
No action taken to avoid nested environments.
[root@shiyanlou myproject]#
pipenv --rm并不会删除生成的Pipfile和Pipfile.lock

管理开发环境:

通常有一些Python包只在你的开发环境中需要,而不是在生产环境中,例如单元测试包。 Pipenv使用–dev标志区分两个环境。也就是说一个–dev参数,帮你在同一个虚拟环境中又区分出了开发和非开发环境。

$ pipenv install --dev pytest

在虚拟环境中运行命令,使用run参数,提供要运行的命令:

$ pipenv run python manage.py runserver

这将使用当前虚拟环境关联的Python解释器,执行命令。或者简单的执行脚本

$ pipenv run python your_script.py

冻结Pipfile,相当于将项目所使用的第三方库列表进行打包输出,类似于virtualenv中生成requirements.txt文件。通过更新Pipfile.lock来冻结库名称及其版本,以及其依赖关系的列表。需要使用lock参数:

[root@shiyanlou myproject]# pipenv lock
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Success!
Updated Pipfile.lock (748999)!
[root@shiyanlou myproject]#

常用命令:

# 定位项目路径
pipenv --where # 定位虚拟环境
pipenv --venv # 定位python解释器
pipenv --py # 显示依赖关系
pipenv graph # 卸载所有包
pipenv uninstall --all # 检查安全漏洞
pipenv check # 在虚拟化宁中运行命令
pipenv run "python manage.py runserver 0.0.0.0:8080" # 卸载当前所有包, 并安装他们的最新版本
pipenv update
# 通过requirements.txx文件安装包(这样我们可以重用之前的requirement.txt 文件来构建我们新的开发环境,把我们的项目顺利的迁到pipenv。)
pipenv install -r requirements.txt

# 生成requirements.txt
pipenv lock -r > requirements.txt
pipenv lock -r --dev >requirements.txt 指定--dev参数, 只安装dev-packages下的包, 如果不指定, 会安装packages下的所有模块 Options:
--where 显示项目文件所在路径
--venv 显示虚拟环境实际文件所在路径
--py 显示虚拟环境Python解释器所在路径
--envs 显示虚拟环境的选项变量
--rm 删除虚拟环境
--bare 最小化输出
--completion 完整输出
--man 显示帮助页面
--three / --two 使用Python 3/2创建虚拟环境(注意本机已安装的Python版本)
--python TEXT 指定某个Python版本作为虚拟环境的安装源
--site-packages 附带安装原Python解释器中的第三方库
--jumbotron An easter egg, effectively.
--version 版本信息
-h, --help 帮助信息

在线学习:Pipenv playground | rootnroll

python虚拟环境管理之Pipenv的更多相关文章

  1. python虚拟环境管理之virtualenv,virtualenvwrapper,pipenv,conda

    虚拟环境的作用 使python环境拥有独立的包,避免污染原本的python环境.为不同的项目创建不同的环境可以避免安装的库过于庞大和相互干扰. 例如你想在同一台机器上开发用python2和python ...

  2. python虚拟环境管理 Pipenv 使用说明

    安装 pip install pipenv 检查是否安装成功 pipenv --version 创建虚拟环境(在工程文件夹下) pipenv install 默认下,Pipenv统一管理所有虚拟环境 ...

  3. Python虚拟开发环境pipenv

    简介 requests库的作者,requests库的作者,requests库的作者(重要的事情说三遍)的又一力作,囊落了virtualenv, pip, pipfile等作为虚拟开发环境的命令行工具 ...

  4. python——虚拟环境管理大合集

    个人常用:pipenv 安装 pip3 install pipenv 创建虚拟环境 # 默认安装在~/.local/virtualenv下 mkdir project cd project pipen ...

  5. python虚拟环境管理包virtualenvwrapper

    1.打开cmd 2.安装virtualenvwrapper pip install virtualenvwrapper-win 3.配置虚拟环境的位置 新建系统变量默认在c盘 4.新建虚拟环境 mkv ...

  6. Python虚拟环境管理工具virtualenvwrapper安装及配置

      1. 安装virtualenv 使用pip install virtualenv安装virtualenv虚拟环境工具 2. 安装virtualenvwrapper a) Linux环境,直接使用p ...

  7. Linux python 虚拟环境管理

    直接复制的内容: 原著:https://www.cnblogs.com/q767498226/p/11099884.html 报错解决:https://blog.csdn.net/weixin_467 ...

  8. Linux下一键安装Python3&更改镜像源&虚拟环境管理技巧

    前言 之前分享过一篇<Linux系统自带Python2&yum的卸载及重装>,介绍了如何卸载及重装Linux(CentOS)自带的的Python2.7.今天主要介绍如何在Linux ...

  9. 【python】虚拟环境管理之 virtualenv 、pipenv

    虚拟环境介绍 应用场景 python在安装第三方包时,会被pip安装到/site-package下,如果我们需要同时维护多个python项目,那这些项目都会共用一个python,而真实需求是多个项目之 ...

  10. Python多环境管理神器(pipenv)

    pipenv 参考官网:https://pipenv.pypa.io/ pipenv 是一款比较新的包管理工具,其借鉴了 javascript 的 npm 和 PHP 的 composer 等理念,通 ...

随机推荐

  1. Node.js开发博客项目笔记-初始化路由(博客列表、新增、更新、删除、详情、登录)(3)

    工程目录 如图所示,工程目录如下: 我们在工程下新建src的目录,src目录下新建三个文件夹: controller:交互数据放到该目录下: model:model类放到该目录下: router:路由 ...

  2. OxyPlot公共属性一览

    一.PlotModel 1.构造函数中设置的属性 public PlotModel() { this.Axes = new ElementCollection(this); //坐标轴集合; this ...

  3. Codeforces[CF1036B]Diagonal Walking v.2题解

    题目大意 很明显,这道题就是求 k 步之内到达点 \((a,b)\) ,然后尽量走对角线,求能走对角线的最大值. 做题思路 首先明白一个事实,即一个对角线可以通过增加一步而抵达点不变,如图: 我们可以 ...

  4. 【赵渝强老师】Oracle RAC集群的概念

    一.什么是Oracle RAC(Real Application Cluster)? Oracle RAC 是一个具有共享缓存架构的集群数据库,它克服了传统的无共享方法和共享磁盘方法的限制,为您的所有 ...

  5. 图片 电力电网行业IT运维方案

    智能电网背景下,电力.电网企业信息化逐渐渗透到其业务链的各个环节,云计算.物联网.移动互联网等新技术的应用,更驱动信息化与业务创新深度融合.电力.电网企业集团信息系统群逐渐朝着一体化方向发展,信息链越 ...

  6. iOS中NSBundle使用小结

    bundle是一个目录,其中包含了程序会使用到的资源. 这些资源包含了如图像,声音,文本文件,属性列表,语言包,编译好的代码,nib文件(用户也会把bundle称为plug-in). 对应bundle ...

  7. 如何在kubernetes环境中共享GPU

    随着人工智能和大模型的快速发展,云上GPU资源共享变得必要,因为它可以降低硬件成本,提升资源利用效率,并满足模型训练和推理对大规模并行计算的需求. 在kubernetes内置的资源调度功能中,GPU调 ...

  8. 云原生爱好者周刊:KubeKey v2.1.0 alpha 版发布!

    KubeKey v2.1.0-alpha.0 发布啦!该版本的主要特性: 支持三种使用场景的 Etcd 集群(二进制部署,Kubeadm 部署,连接外置已存在的 Etcd 集群). 支持部署 Cont ...

  9. 云原生周刊 | 在 Grafana 中显示 K8s Service 之间的依赖关系

    开源项目推荐 Caretta 这个项目可以在 Grafana 监控面板中显示 K8s Service 之间的依赖关系.底层使用的是 eBPF,对应用无侵入. busuanzi 这是一个基于 Golan ...

  10. 云原生爱好者周刊:mist.io 开源多云管理平台

    开源项目推荐 Mist Mist 是一个开源的多云管理平台,它提供了跨云和内部基础设施的可观测性,以及生命周期管理能力.同时还提供了一些功能更强大的商业组件. rga rga 是一个类似于 grep ...