使用pipenv管理python虚拟环境的全过程


Posted in Python onSeptember 25, 2021

pipenv 是Kenneth Reitz大神的作品,能够有效管理Python多个环境,各种包。过去我们一般用virtualenv搭建虚拟环境,管理python版本,但是跨平台的使用不太一致,且有时候处理包之间的依赖总存在问题;过去也常常用 pip进行包的管理,pip已经足够好,但是仍然推荐pipenv,相当于virtualenv和pip的合体,且更加强大。pipenv开源之后,在GitHub上有很高人气(截止于现在有9600多星)。

pipenv主要有以下特性:

  (1)pipenv集成了pip,virtualenv两者的功能,且完善了两者的一些缺陷。

  (2)过去用virtualenv管理requirements.txt文件可能会有问题,Pipenv使用Pipfile和Pipfile.lock,后者存放将包的依赖关系,查看依赖关系是十分方便。

  (3)各个地方使用了哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞。。

  (4)通过加载.env文件简化开发工作流程。

  (5)支持Python2 和 Python3,在各个平台的命令都是一样的。

下面介绍下使用pipenv管理python虚拟环境的全过程,一起看看吧!

python的虚拟环境可以为项目创建一个独立的环境,能够解决使用不同版本依赖给项目带来冲突的麻烦。创建虚拟环境的方式有很多种,pipenv会自动帮你管理虚拟环境和依赖文件,并且提供了一系列命令和选项来帮忙你实现各种依赖和环境管理相关的操作。

1.安装pipenv

pip install pipenv

2.Pipfile文件和Pipfile.lock文件

Pipfile文件和Pipfile.lock是在创建虚拟环境时生成的,用来记录安装依赖的信息,Pipfile时用来替代piprequirements.txt的。

Pipfile.lock包含你的系统信息,所有已安装包的依赖包及其版本信息,以及所有安装包及其依赖包的hash校验信息。

3.创建虚拟环境

$ cd myproject

//创建python3.7的虚拟环境
$ pipenv --python 3.7

创建虚拟环境会默认查找当前目录有没有.venv目录,如果没有会默认在home目录用户下的/Users/xxxx/.local/share/virtualenvs创建虚拟环境目录。推荐先在项目下创建一个.venv文件夹,然后再创建虚拟环境。

如果不存在pipfile,会生成一个piffle,并且如果有的库添加会自动编辑这个文件。

4.激活/进入pipenv shell

$ pipenv shell
$ python --version

//根据Pipfile进行依赖安装,忽略Pipfile.lock
$ pipenv install --skip-lock

//安装指定版本模块
$ pip install pymongo==xxx

根据Pipfile进行依赖包安装。

5.退出虚拟环境

$ exit 或者 ctrl+d

6.查看已经安装的依赖

$ pipenv graph

7.更新升级包

$ pipenv update requests

8.通过requirements.txt安装虚拟环境

pipenv install -r requirements.txt

9.生成requirements.txt文件

pipenv lock -r [--dev] > requirements.txt

10.删除虚拟环境

pipevn --rm

扩展阅读:https://rgb-24bit.github.io/blog/2018/pipenv.html

到此这篇关于使用pipenv管理python虚拟环境的全过程的文章就介绍到这了,更多相关pipenv python虚拟环境内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Python中操作字符串之startswith()方法的使用
May 20 Python
Python实现随机选择元素功能
Sep 14 Python
使用 Python 实现微信公众号粉丝迁移流程
Jan 03 Python
漂亮的Django Markdown富文本app插件的实现
Jan 02 Python
Python中print和return的作用及区别解析
May 05 Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 Python
python实现键盘输入的实操方法
Jul 16 Python
Python在Matplotlib图中显示中文字体的操作方法
Jul 29 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
Python numpy矩阵处理运算工具用法汇总
Jul 13 Python
python logging 重复写日志问题解决办法详解
Aug 04 Python
Django实现WebSocket在线聊天室功能(channels库)
Sep 25 #Python
Python天气语音播报小助手
用python基于appium模块开发一个自动收取能量的小助手
Python实现打乒乓小游戏
Python 类,对象,数据分类,函数参数传递详解
Sep 25 #Python
Python实现简单的俄罗斯方块游戏
Python实现滑雪小游戏
You might like
详解:――如何将图片储存在数据库里
2006/12/05 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
JQuery限制复选框checkbox可选中个数的方法
2015/04/20 Javascript
js实现超简单的展开、折叠目录代码
2015/08/28 Javascript
JQuery实现网页右侧随动广告特效
2016/01/17 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
BootStrap实现带有增删改查功能的表格(DEMO详解)
2016/10/26 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
js提取中文拼音首字母的封装工具类
2018/03/12 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
2018/07/19 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
[01:09:16]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第一场 1月25日
2021/03/11 DOTA
Python中for循环详解
2014/01/17 Python
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
Python实现微信表情包炸群功能
2021/01/28 Python
HTML5中的强制下载属性download使用实例解析
2016/05/12 HTML / CSS
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
诚实守信演讲稿
2014/09/01 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
Go语言切片前或中间插入项与内置copy()函数详解
2021/04/27 Golang
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android