使用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中的lambda表达式的用法
Aug 28 Python
Python卸载模块的方法汇总
Jun 07 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
Jun 16 Python
python3.5 email实现发送邮件功能
May 22 Python
python 用lambda函数替换for循环的方法
Jun 09 Python
Python turtle库的画笔控制说明
Jun 28 Python
python--shutil移动文件到另一个路径的操作
Jul 13 Python
Django filter动态过滤与排序实现过程解析
Nov 26 Python
python使用smtplib模块发送邮件
Dec 17 Python
Python实现简单的2048小游戏
Mar 01 Python
用python删除文件夹中的重复图片(图片去重)
May 12 Python
pytorch 实现在测试的时候启用dropout
May 27 Python
Django实现WebSocket在线聊天室功能(channels库)
Sep 25 #Python
Python天气语音播报小助手
用python基于appium模块开发一个自动收取能量的小助手
Python实现打乒乓小游戏
Python 类,对象,数据分类,函数参数传递详解
Sep 25 #Python
Python实现简单的俄罗斯方块游戏
Python实现滑雪小游戏
You might like
php 8小时时间差的解决方法小结
2009/12/22 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
php设计模式之单例、多例设计模式的应用分析
2013/06/30 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
Python引用模块和查找模块路径
2016/03/17 Python
python机器学习之神经网络(二)
2017/12/20 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
python学习笔记之多进程
2020/08/06 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
放假通知格式
2015/04/14 职场文书
无故旷工检讨书
2015/08/15 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
python编程简单几行代码实现视频转换Gif示例
2021/10/05 Python
分享Python异步爬取知乎热榜
2022/04/12 Python