详解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 fileinput模块使用介绍
Nov 30 Python
使用graphics.py实现2048小游戏
Mar 10 Python
高效测试用例组织算法pairwise之Python实现方法
Jul 19 Python
python实现rsa加密实例详解
Jul 19 Python
python通过getopt模块如何获取执行的命令参数详解
Dec 29 Python
基于python实现名片管理系统
Nov 30 Python
利用Python半自动化生成Nessus报告的方法
Mar 19 Python
python opencv 图像拼接的实现方法
Jun 27 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
Apr 08 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
浅谈matplotlib 绘制梯度下降求解过程
Jul 12 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检测数组长度函数sizeof与count用法
2014/11/17 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
php格式化json函数示例代码
2016/05/12 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
小程序中的箭头函数的具体使用
2020/06/19 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
python通过索引遍历列表的方法
2015/05/04 Python
浅谈Python的垃圾回收机制
2016/12/17 Python
Python模块WSGI使用详解
2018/02/02 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
解决pandas .to_excel不覆盖已有sheet的问题
2018/12/10 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
事业单位接收函
2014/01/10 职场文书
运动会领导邀请函
2014/01/10 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
我的中国梦口号
2014/06/16 职场文书
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
2014年综合治理工作总结
2014/11/20 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL