详解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实现simhash算法实例
Apr 25 Python
用Python的pandas框架操作Excel文件中的数据教程
Mar 31 Python
Python中的元类编程入门指引
Apr 15 Python
Django组件之cookie与session的使用方法
Jan 10 Python
Flask配置Cors跨域的实现
Jul 12 Python
详解如何减少python内存的消耗
Aug 09 Python
Python3常用内置方法代码实例
Nov 18 Python
python使用pip安装SciPy、SymPy、matplotlib教程
Nov 20 Python
python保留小数位的三种实现方法
Jan 07 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
Sep 01 Python
Python类绑定方法及非绑定方法实例解析
Oct 09 Python
python线程优先级队列知识点总结
Feb 28 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
什么是短波收听SWL
2021/03/01 无线电
php的curl实现get和post的代码
2008/08/23 PHP
php绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
JS分页效果示例
2013/10/11 Javascript
jQuery瀑布流插件Wookmark使用实例
2014/04/02 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
2015/03/03 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
JS实现购物车特效
2017/02/02 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
JS中promise化微信小程序api
2018/04/12 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
django 实现将本地图片存入数据库,并能显示在web上的示例
2019/08/07 Python
python多线程扫描端口(线程池)
2019/09/04 Python
python装饰器的特性原理详解
2019/12/25 Python
Keras官方中文文档:性能评估Metrices详解
2020/06/15 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
html5简介及新增功能介绍
2020/05/18 HTML / CSS
美国购车网站:TrueCar
2016/10/19 全球购物
英国图书音像网站:Hive.co.uk(图书、电子书、DVD、蓝光、音乐CD等)
2017/10/16 全球购物
浙江文明网签名寄语
2014/01/18 职场文书
2014年信访工作总结
2014/11/17 职场文书
财务统计员岗位职责
2015/04/14 职场文书
利用Python判断你的密码难度等级
2021/06/02 Python
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python