关于requirements.txt的一切

Author Avatar
kdwycz 3月 02, 2017
  • 在其它设备中阅读本文章

或许是因为太简单了,网上没有搜到比较完整的介绍

简介

大部分Python项目都会有一个requirements.txt,用来记录项目的依赖。主要的写法如下所示

pip freeze > requirements.txt  # 生成requirements.txt
pip install -r requirements.txt  # 从requirements.txt安装依赖

如果包来源为Github

某个commit

package-one==1.9.4
git+git://github.com/path/to/[email protected]#egg=package-two
package-three==1.0.1

某个branch(master)

git+git://github.com/path/to/[email protected]#egg=package-two

某个tag(0.1)

git+git://github.com/path/to/[email protected]#egg=package-two

某个正式版本(3.7.1):

git+git://github.com/path/to/[email protected]/3.7.1#egg=package-two

支持的写法

-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安装后马上去编辑下依赖文件也不是什么麻烦事→_→

参考

pip文档 Requirements Files
Two Scoops of Django
Django | requirement.txt 生成
pigar
引用Github的包-爆栈网

本站所有原创内容均以 署名-非商业性使用-相同方式共享 4.0 (CC BY-NC-SA 4.0) 协议授权
本文链接:https://blog.kdwycz.com/archives/all-about-requirements-txt/