详解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实现服务器中只重载被修改的进程的方法
Apr 30 Python
python用Pygal如何生成漂亮的SVG图像详解
Feb 10 Python
python爬虫_微信公众号推送信息爬取的实例
Oct 23 Python
Python读取Excel表格,并同时画折线图和柱状图的方法
Oct 14 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
python 如何去除字符串头尾的多余符号
Nov 19 Python
Python运行异常管理解决方案
Mar 09 Python
Python中实现一行拆多行和多行并一行的示例代码
Sep 06 Python
Python控制鼠标键盘代码实例
Dec 08 Python
Pycharm plot独立窗口显示的操作
Dec 11 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 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网站安装程序制作的原理、步骤、注意事项和示例代码
2010/08/01 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
JS常见问题整理(持续更新)
2013/08/06 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
2018/08/22 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
vue 递归组件的简单使用示例
2021/01/14 Vue.js
ajax jquery实现页面某一个div的刷新效果
2021/03/04 jQuery
使用Python绘制图表大全总结
2017/02/11 Python
Python subprocess模块常见用法分析
2018/06/12 Python
对Python之gzip文件读写的方法详解
2019/02/08 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
2020/01/08 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
法国美发器材和产品购物网站:Beauty Coiffure
2016/12/05 全球购物
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
IBatis持久层技术
2016/07/18 面试题
房地产管理毕业生自荐信
2013/11/04 职场文书
银行领导证婚词
2014/01/11 职场文书
工作睡觉检讨书
2014/02/25 职场文书
2014年组织部工作总结
2014/11/14 职场文书
2014年优秀班主任工作总结
2014/12/16 职场文书