详解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程序设计入门(1)基本语法简介
Jun 13 Python
使用Python的Tornado框架实现一个一对一聊天的程序
Apr 25 Python
简单介绍Python中的JSON使用
Apr 28 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
python使用正则表达式替换匹配成功的组
Nov 17 Python
django有外键关系的两张表如何相互查找
Feb 10 Python
django API 中接口的互相调用实例
Apr 01 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
Apr 24 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
django models里数据表插入数据id自增操作
Jul 15 Python
如何使用python socket模块实现简单的文件下载
Sep 04 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 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+mysql分页代码详解
2008/03/27 PHP
php array_slice函数的使用以及参数详解
2008/08/30 PHP
php数组一对一替换实现代码
2012/08/31 PHP
计算php页面运行时间的函数介绍
2013/07/01 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
PHP实现自动识别原编码并对字符串进行编码转换的方法
2016/07/13 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
JQuery中dataGrid设置行的高度示例代码
2014/01/03 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
Node.js实现数据推送
2016/04/14 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
javascript异步处理与Jquery deferred对象用法总结
2019/06/04 jQuery
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
web.py 十分钟创建简易博客实现代码
2016/04/22 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
python如何实现异步调用函数执行
2019/07/08 Python
Python 实现训练集、测试集随机划分
2020/01/08 Python
python3正则模块re的使用方法详解
2020/02/11 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
Django权限设置及验证方式
2020/05/13 Python
保险专业自荐信范文
2014/02/20 职场文书
商铺门前三包责任书
2014/07/25 职场文书
欢迎词范文
2015/01/27 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
python井字棋游戏实现人机对战
2022/04/28 Python