详解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 相关文章推荐
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
酷! 程序员用Python带你玩转冲顶大会
Jan 17 Python
Python实现PS滤镜特效之扇形变换效果示例
Jan 26 Python
Python callable()函数用法实例分析
Mar 17 Python
python如何在列表、字典中筛选数据
Mar 19 Python
使用Python写一个小游戏
Apr 02 Python
pycharm安装和首次使用教程
Aug 27 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
实现ECharts双Y轴左右刻度线一致的例子
May 16 Python
使用keras实现densenet和Xception的模型融合
May 23 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
Jun 24 Python
python 如何做一个识别率百分百的OCR
May 29 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
利用PHP和AJAX创建RSS聚合器的代码
2007/03/13 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
JS监控关闭浏览器操作的实例详解
2017/09/12 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
js get和post请求实现代码解析
2020/02/06 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
python 快速排序代码
2009/11/23 Python
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
python中正则表达式的使用方法
2018/02/25 Python
讲解Python3中NumPy数组寻找特定元素下标的两种方法
2019/08/04 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
用CSS禁用输入法(CSS3 UI规范)实例解析
2012/12/04 HTML / CSS
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
Servlet如何得到服务器的信息
2015/12/22 面试题
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
党员个人查摆剖析材料
2014/10/16 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
中秋节感想
2015/08/10 职场文书
字典算法实现及操作 --python(实用)
2021/03/31 Python
Mac环境Nginx配置和访问本地静态资源的实现
2021/03/31 Servers
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python