详解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 psutil模块简单使用实例
Apr 28 Python
Python加密方法小结【md5,base64,sha1】
Jul 13 Python
使用Eclipse如何开发python脚本
Apr 11 Python
pycharm运行和调试不显示结果的解决方法
Nov 30 Python
Python获取航线信息并且制作成图的讲解
Jan 03 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
Python登录系统界面实现详解
Jun 25 Python
基于Django框架的权限组件rbac实例讲解
Aug 31 Python
python tkinter组件摆放方式详解
Sep 16 Python
Django模板导入母版继承和自定义返回Html片段过程解析
Sep 18 Python
vscode 配置 python3开发环境的方法
Sep 19 Python
jupyter notebook实现显示行号
Apr 13 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 字符串 小常识
2009/06/05 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
基于jquery实现最简单的选项卡切换效果
2016/05/08 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
npm配置国内镜像资源+淘宝镜像的方法
2018/09/07 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
python 合并文件的具体实例
2013/08/08 Python
PYTHON压平嵌套列表的简单实现
2016/06/08 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
python使用生成器实现可迭代对象
2018/03/20 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
Django与pyecharts结合的实例代码
2020/05/13 Python
Python devel安装失败问题解决方案
2020/06/09 Python
一个入门级python爬虫教程详解
2021/01/27 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
满月酒主持词
2014/03/27 职场文书
公司爱心捐款倡议书
2014/05/14 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
毕业论文指导老师意见
2015/06/04 职场文书
教师节大会主持词
2015/07/06 职场文书
暑期工社会实践报告
2015/07/13 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
如何在Python项目中引入日志
2021/05/31 Python