详解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 相关文章推荐
关于pip的安装,更新,卸载模块以及使用方法(详解)
May 19 Python
深入学习Python中的上下文管理器与else块
Aug 27 Python
Python模块文件结构代码详解
Feb 03 Python
Python实现的批量修改文件后缀名操作示例
Dec 07 Python
Django+python服务器部署与环境部署教程详解
Mar 30 Python
jupyter notebook参数化运行python方式
Apr 10 Python
opencv 图像腐蚀和图像膨胀的实现
Jul 07 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
Jul 31 Python
Python如何发送与接收大型数组
Aug 07 Python
Python环境搭建过程从安装到Hello World
Feb 05 Python
用Python远程登陆服务器的步骤
Apr 16 Python
pandas中对文本类型数据的处理小结
Nov 01 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&amp;java(二)
2006/10/09 PHP
PHP 地址栏信息的获取代码
2009/01/07 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
小程序微信退款功能实现方法详解【基于thinkPHP】
2019/05/05 PHP
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
JavaScript 反科里化 this [译]
2012/09/20 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
vue头部导航动态点击处理方法
2018/11/02 Javascript
浅谈Vue数据响应思路之数组
2018/11/06 Javascript
微信小程序点击列表跳转到对应详情页过程解析
2019/09/26 Javascript
JS数组方法join()用法实例分析
2020/01/18 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
解决vue中的无限循环问题
2020/07/27 Javascript
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
基于python实现对文件进行切分行
2020/04/26 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
英国水族馆和池塘用品购物网站:Warehouse Aquatics
2019/08/29 全球购物
毕业生求职推荐信
2013/11/04 职场文书
小学运动会入场式解说词
2014/02/18 职场文书
环保倡议书50字
2014/05/15 职场文书
先进典型发言材料
2014/12/30 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
Python并发编程实例教程之线程的玩法
2021/06/20 Python
Python max函数中key的用法及原理解析
2021/06/26 Python
MYSQL中文乱码问题的解决方案
2022/06/14 MySQL