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之传说中的函数编写条规
Oct 11 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
Nov 09 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
举例讲解Python面向对象编程中类的继承
Jun 17 Python
Windows安装Python、pip、easy_install的方法
Mar 05 Python
pymongo中group by的操作方法教程
Mar 22 Python
python itchat实现调用微信接口的第三方模块方法
Jun 11 Python
python实现拼图小游戏
Feb 22 Python
Python中过滤字符串列表的方法
Dec 22 Python
Python学习之time模块的基本使用
Jan 17 Python
Python上下文管理器Content Manager
Jun 26 Python
Python如何用re模块实现简易tokenizer
May 02 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远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
PHP 强制下载文件代码
2010/10/24 PHP
php array_walk() 数组函数
2011/07/12 PHP
国外PHP程序员的13个好习惯小结
2012/02/20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
Python中进程和线程的区别详解
2017/10/29 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
对于Python深浅拷贝的理解
2019/07/29 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
浅析Django中关于session的使用
2019/12/30 Python
Django models filter筛选条件详解
2020/03/16 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
openCV提取图像中的矩形区域
2020/07/21 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
俄罗斯游戏商店:Buka
2020/03/01 全球购物
药剂学专业应届生自荐信
2013/09/29 职场文书
精神文明建设汇报材料
2014/12/24 职场文书
焦裕禄观后感
2015/06/03 职场文书
2015年中秋寄语
2015/07/31 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
教你一步步实现一个简易promise
2021/11/02 Javascript
python数据处理之Pandas类型转换
2022/04/28 Python