详解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发送和接收邮件
Sep 27 Python
python定向爬取淘宝商品价格
Feb 27 Python
python Spyder界面无法打开的解决方法
Apr 27 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
Feb 08 Python
Python生成指定数量的优惠码实操内容
Jun 18 Python
基于Python实现船舶的MMSI的获取(推荐)
Oct 21 Python
解决python中的幂函数、指数函数问题
Nov 25 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
pandas分批读取大数据集教程
Jun 06 Python
python 浮点数四舍五入需要注意的地方
Aug 18 Python
python Matplotlib数据可视化(2):详解三大容器对象与常用设置
Sep 30 Python
Python开发.exe小工具的详细步骤
Jan 27 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
生成缩略图
2006/10/09 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
2015/09/25 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
jQuery 学习 几种常用方法
2009/06/11 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
2013/01/23 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
Bootstrap面板使用方法
2017/01/16 Javascript
Vue from-validate 表单验证的示例代码
2017/09/26 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
ES6字符串的扩展实例
2020/12/21 Javascript
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
python 统计列表中不同元素的数量方法
2018/06/29 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
Android面试题及答案
2015/09/04 面试题
动态密码技术
2012/10/18 面试题
预备党员政审材料
2014/02/04 职场文书
户外婚礼策划方案
2014/02/08 职场文书
《我的信念》教学反思
2014/02/15 职场文书
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
退休职工欢送会致辞
2015/08/01 职场文书
学生会任命书范本
2015/09/21 职场文书
《生物入侵者》教学反思
2016/02/16 职场文书
七年级作文之下雨天
2019/12/23 职场文书