1.什么是pipenv?

是一个 Python 库和 Python 虚拟环境的管理工具,包含了 pip + virtualenv 的功能。可以自动维护库之间的依赖关系。

1)具体介绍可以看这个链接:pipenv官方介绍

2)关于Python 包管理工具的历史变迁推荐看这篇文章 《包管理神器 - pipenv》

2.使用

2.1 安装:

pip install pipenv

2.2 基本命令

1)创建Python3虚拟环境,不带第三方库:

注意:

> 真实环境要安装有 Python3才行;

> 虚拟环境只能创建和真实环境相同的 Python 版本;

首先进入 项目文件夹:

# env_python3 是文件夹名称
cd env_python3

然后执行(创建虚拟环境)

pipenv install --three

2)激活虚拟环境:

首先进入虚拟环境所在文件夹:

# env_python3 是文件夹名称
cd env_python3

然后执行:

pipenv shell

 3)虚拟环境中安装第三方库:

# third_libs 第三方库名称
pipenv install third_libs

 4)虚拟环境中安装指定版本的第三方库:

# 安装 third_libs 的 1.11 版
pipenv install third_libs == 1.11

 5)虚拟环境中卸载第三方库:

# third_libs 第三方库名称
pipenv uninstall third_libs

6)虚拟环境中卸载所有第三方库:

pipenv uninstall --all

7)显示第三方库依赖图(或者说查看安装了哪些库):

pipenv graph

8)生成 pipfile.lock 文件 (该文件中保存的是所有第三方库依赖关系,新环境直接安装即可):

pipenv lock

9)安装所有依赖包括 Pipfile 中 dev-packages 下的库所产生的依赖(详细依赖保存在 Pipfile.lock 中,见 3 和 4),
     这里运行后,会直接从 Pipfile.lock 中读取依赖并安装 ,可以用于新的虚拟环境中,安装已有虚拟环境的库:

pipenv install --dev

10)安装所有在 pipfile.lock 中保存的依赖:

pipenv sync

11)退出虚拟环境:

exit

12)虚拟环境 Python 解释器位置:

pipenv --py
# out: C:\Users\xxx\.virtualenvs\xxxx-5w8xxxxa\Scripts\python.exe

13)虚拟环境位置:

pipenv --venv
# out: C:\Users\xxxx\.virtualenvs\xxx-5wxxxxxa

14)卸载所有未在 Pipfile.lock 中记录的库:

pipenv clean

 15)删除虚拟环境(这里指的是 13 命令的路径所指向的虚拟环境):

pipenv --rm

3 Pipfile 和 Pipfile.lock 的区别:

3.1 描述:

> Pipfile 中保存的是你 pipenv install third_lib_name 时用到的 third_lib_name 名称

> 而 Pipfile.lock 中保存的是 third_lib_name 安装时具体安装了哪些依赖库

3.2 文件内容:

# Pipfile
[[source]]
name = "pypi"
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
verify_ssl = true[dev-packages][packages]
flask = "*"
sqlalchemy = "*"[requires]
python_version = "3.5"
# Pipfile.lock
{"_meta": {"hash": {"sha256": "8cdb27a291b3e9d69d9deb98e9594b98b2dbe4192d244571c3b62e20be976f56"},"pipfile-spec": 6,"requires": {"python_version": "3.5"},"sources": [{"name": "pypi","url": "https://pypi.tuna.tsinghua.edu.cn/simple","verify_ssl": true}]},"default": {"click": {"hashes": ["sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13","sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"],"version": "==7.0"},"flask": {"hashes": ["sha256:2271c0070dbcb5275fad4a82e29f23ab92682dc45f9dfbc22c02ba9b9322ce48","sha256:a080b744b7e345ccfcbc77954861cb05b3c63786e93f2b3875e0913d44b43f05"],"index": "pypi","version": "==1.0.2"},"itsdangerous": {"hashes": ["sha256:321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19","sha256:b12271b2047cb23eeb98c8b5622e2e5c5e9abd9784a153e9d8ef9cb4dd09d749"],"version": "==1.1.0"},"jinja2": {"hashes": ["sha256:065c4f02ebe7f7cf559e49ee5a95fb800a9e4528727aec6f24402a5374c65013","sha256:14dd6caf1527abb21f08f86c784eac40853ba93edb79552aa1e4b8aef1b61c7b"],"version": "==2.10.1"},"markupsafe": {"hashes": ["sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473","sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161","sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235","sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5","sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff","sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b","sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1","sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e","sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183","sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66","sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1","sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1","sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e","sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b","sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905","sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735","sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d","sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e","sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d","sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c","sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21","sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2","sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5","sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b","sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6","sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f","sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f","sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7"],"version": "==1.1.1"},"sqlalchemy": {"hashes": ["sha256:d5432832f91d200c3d8b473a266d59442d825f9ea744c467e68c5d9a9479fbce"],"index": "pypi","version": "==1.3.2"},"werkzeug": {"hashes": ["sha256:0a73e8bb2ff2feecfc5d56e6f458f5b99290ef34f565ffb2665801ff7de6af7a","sha256:7fad9770a8778f9576693f0cc29c7dcc36964df916b83734f4431c0e612a7fbc"],"version": "==0.15.2"}},"develop": {}
}

4 pipenv install third_lib、Pipfile 和 Pipfile.lock 之间的运作 

从图片的安装过程可以看出,当存在 Pipfile.lock文件时,运行命令

pipenv install flask

首先安装 flask 库,然后将 flask 名称添加到 Pipfile 文件下的 packages 下(见 3.2 Pipfile 内容),

然后分析依赖关系,将 flask 的相关依赖添加到 Pipfile.lock 文件中。

5 部署项目到生产环境

1)首先生成依赖库文件 requirements.txt

pipenv lock -r > requirements.txt

2)在生产环境安装依赖库

pip install -r requirements.txt

3)我的 requirements.txt 文件样例

-i https://pypi.tuna.tsinghua.edu.cn/simple
click==7.0
flask==1.0.2
itsdangerous==1.1.0
jinja2==2.10.1
markupsafe==1.1.1
sqlalchemy==1.3.2
werkzeug==0.15.2

6 多人协作中的虚拟环境重现

cd your_project
pipenv sync

7 第三方库下载较慢的解决

如果安装库的时候较慢,可以使用国内镜像,修改 Pipfile 下 source 下的 url 即可,如

# 这里修改库源为清华镜像源
[[source]]
name = "pypi"
url = "https://pypi.tuna.tsinghua.edu.cn/simple"

The end.

【Python】—— pipenv使用小结相关推荐

  1. Python - 输出格式 (学习小结)

    Python - 输出格式 (学习小结) Bu.xing 利用现代手段,创建学习家园 ​关注他 1 人赞同了该文章 Python 输出格式 我们常说的输出格式分两种含义: # 一种是指数据在屏幕上的显 ...

  2. python基础知识点小结(2021/2/9)

    python基础知识点小结(2021/2/9)持续更新中~~ 入门小知识 cmd 在cmd上进行python,直接输入 python\quad pythonpython 退出cmd输入 exit()\ ...

  3. Linux下python脚本编写小结

    Linux下python脚本编写小结 1.如何在linux系统中,看是否安装了python: -which python 或者 which python3 如何在python脚本中使用shell命令: ...

  4. Python pipenv

    如果install命令后没有包名,则[packages]中所有的包都会被安装 pip3 install pipenv 创建虚拟环境 首先要进入项目的目录 查看当前的虚拟环境pipenv --venv ...

  5. python沙箱逃逸小结

    上周末,协会的同学去天津交流,天津大学的同学讲了一个python沙箱逃逸的案例.今天结合之前的所学和比赛经验写一个小结. 案例1 这是hackuctf 2012的一道题 1. def make_sec ...

  6. 来自Java程序员的Python新手入门小结

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 欣宸是个Java程序员,最近正在学习Pyth ...

  7. Python个人学习小结

    Python基本语法 数据类型 浮点数:高精度 10的-308次方到10的308次方之间 精度数量级为10的-16次方 可能会产生不确定尾数 round(x, d)函数:对数据x进行四舍五入运算!d为 ...

  8. Windows下Python程序打包小结

    这还是之前的文章,最近发现了,还是存在网上好找些. 当然现在我的观念有点不一样了,纯Windows下桌面应用,还是Winform为首选,遇到复杂动画时用WPF控件.跨平台桌面应用,可以选择MONO,还 ...

  9. 关于python文件读写小结

    读文件 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件 ...

最新文章

  1. MySQL和Python交互
  2. 单链表的插入和删除_从0开始的编程之梦——数据结构之单链表的基本运算
  3. Apache Superset从入门到放弃(基于python3.6.9)
  4. 京东连续亏损十几年,为什么却发展越来越大?
  5. centos7 qt之程序编译 cant start process “cmake”
  6. scrapyd远程连接配置
  7. SSM整理笔记1——SSM网站初步功能设计
  8. java反编译软件_安卓强大的逆向软件,媲美MT管理器!
  9. 为什么搞农旅项目那么多人失败?
  10. Eclipse的Ctrl+Shift+R中过滤文件类型
  11. pb中建立人员信息表_根据部门名称,从Excel人员花名册表格中快速调取所有员工信息...
  12. Freemarker word导出教程
  13. 算法设计实验一单峰序列
  14. 面试反问环节应该问什么?
  15. 《阴阳师·4蟾蜍》原作:梦枕貘
  16. 为什么计算机无法打开扫描机,为什么打印机无法扫描 打印机无法扫描是什么原因 - 云骑士一键重装系统...
  17. 彻底解决idea maven依赖报红报错问题
  18. SAP 采购定价日期控制
  19. 水星怎么设置网速最快_wifi怎样设置网速最快
  20. Fortran NINT函数意思

热门文章

  1. 【系】微信小程序云开发实战坚果商城-云开发开篇
  2. 【小程序背景图之海贼王篇】
  3. day07 Java链表(环、快慢指针)
  4. html仿微信语音功能案例,html5聊天案例|趣聊h5|仿微信界面聊天|红包|语音聊天|地图...
  5. 2022渗透测试-信息收集笔记
  6. 蓝牙技术|蓝牙(BLE)低功耗你所不了解的特性
  7. Linux安装RPM、YUM
  8. [NOIP2015] 斗地主
  9. ios 高德获取定位_更新日志-iOS 定位SDK | 高德地图API
  10. 奇瑞QQ序列首款新能源汽车QQ冰淇淋上市;上海嘉定集中发展氢燃料电池和ICV | 能动...