详解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 抓取动态网页内容方案详解
Dec 25 Python
Python按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
Python字符编码与函数的基本使用方法
Sep 30 Python
JSONLINT:python的json数据验证库实例解析
Nov 28 Python
Python建立Map写Excel表实例解析
Jan 17 Python
python opencv之SURF算法示例
Feb 24 Python
带你认识Django
Jan 15 Python
flask框架单元测试原理与用法实例分析
Jul 23 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
Oct 11 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
python argparse传入布尔参数false不生效的解决
Apr 20 Python
python如何安装下载后的模块
Jul 03 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
采用header定义为文件然后readfile下载(隐藏下载地址)
2014/01/31 PHP
利用php输出不同的心形图案
2016/04/22 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
基于jquery实现的可以编辑选择的下拉框的代码
2010/11/19 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
axios学习教程全攻略
2017/03/26 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
微信小程序实现Session功能及无法获取session问题的解决方法
2019/05/07 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
Python和Ruby中each循环引用变量问题(一个隐秘BUG?)
2014/06/04 Python
Python类定义和类继承详解
2015/05/08 Python
简单了解python模块概念
2018/01/11 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
Python字典底层实现原理详解
2019/12/18 Python
Python实现名片管理系统
2020/02/14 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
高考自主招生自荐信
2013/10/20 职场文书
安全承诺书范文
2014/03/26 职场文书
幼儿园大班评语大全
2014/04/17 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
防暑降温通知书
2015/04/27 职场文书
深入理解python协程
2021/06/15 Python