python的依赖管理的实现


Posted in Python onMay 14, 2019

主流开发语言的包管理工具一般都是支持依赖管理的,比如PHP的composer、Java的mvn。

对于python来说又该如何管理依赖呢?

pip基本用法

python还不错,它提供了pip命令来安装依赖,同时pip会自动安装间接依赖,的确是很方便的。

安装依赖的命令是pip,举个栗子:

pip install requests

然后可以看到一些打印信息:

Looking in indexes: http://mirrors.aliyun.com/pypi/simple
Requirement already satisfied: requests in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (2.21.0)
Requirement already satisfied: certifi>=2017.4.17 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from requests) (2018.4.16)
Requirement already satisfied: idna<2.9,>=2.5 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from requests) (2.7)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from requests) (3.0.4)
Requirement already satisfied: urllib3<1.25,>=1.21.1 in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages (from requests) (1.23)

可以明确安装的requests库版本是2.21.0,这也可以后续通过pip freeze命令来查看:

pip freeze |grep requests
requests==2.21.0
requests-oauthlib==1.0.0

编写requirements.txt

为了将开发时的依赖保留下来,我们可以编写一个文本文件叫做requirements.txt,内容如下:

requests==2.21.0

记得把这个文件提交到源码仓库的根目录,我们可以看到python开源项目都遵循这个套路,比如kubenetes-client的 requirements.txt :

certifi>=14.05.14 # MPL
six>=1.9.0 # MIT
python-dateutil>=2.5.3 # BSD
setuptools>=21.0.0 # PSF/ZPL
urllib3>=1.23 # MIT
pyyaml>=3.12 # MIT
google-auth>=1.0.1 # Apache-2.0
ipaddress>=1.0.17;python_version=="2.7" # PSF
websocket-client>=0.32.0,!=0.40.0,!=0.41.*,!=0.42.* # LGPLv2+
requests # Apache-2.0
requests-oauthlib # ISC

安装所有依赖

当我们变更部署环境时,通过执行如下命令即可安装所有依赖:

pip install -r requirements.txt

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python自动化工具日志查询分析脚本代码实现
Nov 26 Python
Django中几种重定向方法
Apr 28 Python
浅谈Python单向链表的实现
Dec 24 Python
django实现同一个ip十分钟内只能注册一次的实例
Nov 03 Python
Django之模型层多表操作的实现
Jan 08 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 Python
如何理解python对象
Jun 21 Python
Python tkinter界面实现历史天气查询的示例代码
Aug 23 Python
你需要掌握的20个Python常用技巧
Feb 28 Python
Python数据可视化之Seaborn的安装及使用
Apr 19 Python
详解Python3序列赋值、序列解包
May 14 #Python
Python实战之制作天气查询软件
May 14 #Python
python中时间模块的基本使用教程
May 14 #Python
使用Python正则表达式操作文本数据的方法
May 14 #Python
Django如何防止定时任务并发浅析
May 14 #Python
python3 pygame实现接小球游戏
May 14 #Python
Django 多环境配置详解
May 14 #Python
You might like
用PHP制作静态网站的模板框架
2006/10/09 PHP
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
浅析php单例模式
2014/11/25 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
JS实多级联动下拉菜单类,简单实现省市区联动菜单!
2007/05/03 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
Python 学习笔记
2008/12/27 Python
Python读取mp3中ID3信息的方法
2015/03/05 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
python tkinter界面居中显示的方法
2018/10/11 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
2018/01/10 HTML / CSS
美食节策划方案
2014/05/26 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers
Go语言怎么使用变长参数函数
2022/07/15 Golang