详解python中requirements.txt的一切


Posted in Python onMarch 03, 2017

简介

Python项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号。以便新环境部署。

主要的写法如下所示

pip freeze > requirements.txt # 生成requirements.txt
pip install -r requirements.txt # 从requirements.txt安装依赖

支持的写法

-r base.txt # base.txt下面的所有包
pypinyin==0.12.0 # 指定版本(最日常的写法)
django-querycount>=0.5.0 # 大于某个版本
django-debug-toolbar>=1.3.1,<=1.3.3 # 版本范围
ipython # 默认(存在不替换,不存在安装最新版)

第三方工具生成

pip freeze 会附带上一些不需要的包,以及某些包依赖的包~

    pipreqs 自动分析项目中引用的包。对Django项目自动构建的时候忽略了Mysql包,版本也很奇怪;而且联网搜索的时候遇到404就报错跳出了?

    pigar 功能同上,会显示包被项目文件引用的地方(搜索下就能解决的问题啊= =感觉是伪需求),404的问题也存在

    pip-tools 通过第三方文件生成requirements.txt,讲道理为什么不直接写呢,要通过第三方包来做一层转换

推荐用法

一般项目会分为开发环境,测试环境,生产环境等……依赖的包会不同。推荐在文件夹下为每个环境建立一个requirements.txt文件。公有的包存在base.txt供引用

➜ meeting git:(sync) ✗ tree requirements -h
requirements
├── [ 286] base.txt
├── [ 80] local.txt
└── [ 28] production.txt

由于上面提到的工具并不好用~还是推荐手动维护依赖列表。毕竟pip安装后马上去编辑下依赖文件也不是什么麻烦事

setup.py 与 requirements.txt 区别

setup.py 这个文件是用来管理模块的,你可以将你的项目打包为模块上传到 pypi 中,也同样能将项目作为模块放入python 的系统加载模块目录下。

requiremens.txt 这个文件是列举你这个项目引用了哪些非本项目的依赖的,除此之外,没有其他作用。

因此,可以看出这两个项目其实并没有冲突关系,而且有很大共存的必要。

  1. 假如你的项目需要保存为系统模块,或者可安装为系统命令的 setup.py 就必不可少了
  2. 假如你的项目是可以直接运行的,那么 requirements.txt 也是必不可少。
  3. 如果你两种功能都需要,那么就两个文件都不能少。

有这两种功能都需要的么?

必须有啊,而且还很多,例如 Flask,他就支持两种方式:

  1. 以系统命令的方式启动,在 Flask 0.11.1 中新加入了一个 Click 包,他可以让你 setup 之后以命令的方式运行
  2. 直接运行,传统的 Flask 启动方式一般就是 app.run() 或者 python manage.py runserver

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
一个超级简单的python web程序
Sep 11 Python
日常整理python执行系统命令的常见方法(全)
Oct 22 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
Django 请求Request的具体使用方法
Nov 11 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
Feb 07 Python
python 非线性规划方式(scipy.optimize.minimize)
Feb 11 Python
django使用channels实现通信的示例
Oct 19 Python
Pycharm自动添加文件头注释和函数注释参数的方法
Oct 23 Python
python SOCKET编程基础入门
Feb 27 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
Python之Matplotlib绘制热力图和面积图
Apr 13 Python
python中异常捕获方法详解
Mar 03 #Python
python利用不到一百行代码实现一个小siri
Mar 02 #Python
Python正则表达式教程之三:贪婪/非贪婪特性
Mar 02 #Python
Python正则表达式教程之二:捕获篇
Mar 02 #Python
Python正则表达式教程之一:基础篇
Mar 02 #Python
Python单例模式实例详解
Mar 01 #Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 #Python
You might like
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
Jquery通过Ajax方式来提交Form表单的具体实现
2013/11/07 Javascript
JavaScript中的Primitive对象封装介绍
2014/12/31 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
jQuery基于ID调用指定iframe页面内的方法
2016/07/06 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
基于jQuery实现的设置文本区域的光标位置
2018/06/15 jQuery
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
jQuery选择器之基本过滤选择器用法实例分析
2019/02/19 jQuery
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
Python3使用requests发闪存的方法
2016/05/11 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
python中常见错误及解决方法
2020/06/21 Python
简单了解Django项目应用创建过程
2020/07/06 Python
opencv 阈值分割的具体使用
2020/07/08 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
Python爬取网页信息的示例
2020/09/24 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
教育学专业毕业生的自我评价
2013/11/21 职场文书
工商企业管理实习自我鉴定
2013/12/04 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
运动会广播稿200字
2014/01/15 职场文书
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
党性心得体会
2014/09/03 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
2019大学生实习报告
2019/06/21 职场文书
粗暴解决CUDA out of memory的问题
2021/05/22 Python