Django | requirement.txt 生成

pip

通常我们熟悉使用的都是 pip, 这个工具确实方便项目管理依赖包。当想把当前项目依赖的包的名称和版本导入指定的 txt 文件中时,只需要执行

pip freeze > ./requirements.txt

此时可以看到项目下面生成了 requirements.txt
然后通过 pip list 查看项目依赖包

Django (1.8.3)
djangorestframework (3.1.3)
docopt (0.6.2)
gnureadline (6.3.3)
ipython (3.2.1)
MySQL-python (1.2.3)
pip (7.1.0)
pipreqs (0.2.8)
Pygments (2.0.2)
requests (2.7.0)
setuptools (18.0.1)
wheel (0.24.0)
yarg (0.1.9)

接着通过 cat ./requirements.txt

Django==1.8.3
djangorestframework==3.1.3
docopt==0.6.2
gnureadline==6.3.3
ipython==3.2.1
MySQL-python==1.2.3
pipreqs==0.2.8
Pygments==2.0.2
requests==2.7.0
wheel==0.24.0
yarg==0.1.9

此时可以看到 pip freeze 生成的列表比 pip list 少了两个包,分别是

  • pip (7.1.0)
  • setuptools (18.0.1)

至于原因:因为 virtualenv 创建虚拟环境时会自动包含了上面的两个依赖包

这种生成 requirements.txt 的方法很通用,可以在其他项目中执行

pip install -r path/requirements.txt 

安装相关的依赖包,这是惯用的做法

pipreqs

使用 pipreqs 则需要安装,简单执行

pip install pipreqs

即可

现在看看此工具帮助提示,执行 pipreqs -h

pipreqs - Generate pip requirements.txt file based on imports

Usage:
    pipreqs [options] <path>

Options:
    --use-local         Use ONLY local package information instead of querying PyPI
    --debug             Print debug information
    --savepath <file>   Save the list of requirements in the given file
    --force             Overwrite existing requirements.txt

很直白的知道此工具是创建环境依赖包的列表文件

注意

pipreqs - Generate pip requirements.txt file based on imports

此工具是基于 imports,这是什么意思呢,即你的项目引入了哪个包,此工具才会把引入的包写到 requirements.txt 中,是不是觉得要比 pip freeze 干净,注意生成的是 requirements.txt 文件,而不是 requirement.txt

例子

执行 pipreqs --use-local ./ 生成 requirements.txt

因为项目只引入了 djangopygments, 此时 cat requirements.txt, 文件中只包含了两条数据

Django == 1.8.3
Pygments == 2.0.2

引入问题

引入不是很完整,比如数据库依赖包,就不会包含进来,

pip-compile

使用前需要安装 pip install pip-tools 如果权限不够,请 sudo

使用步骤 1

先在项目目录中创建 requirements.in 文件,然后手动写入包文件名称

例如:requirements.in (例子随便写的)

django
yolk

使用步骤2

执行 pip-compile requirements.in, 然后 cat requirements.txt

#
# This file is autogenerated by pip-compile
# Make changes in requirements.in, then run this to update:
#
#    pip-compile requirements.in
#
django==1.8.3
yolk==0.4.3

# The following packages are commented out because they are
# considered to be unsafe in a requirements file:
# setuptools==18.1          # via yolk

结论

生成 xx.txt 文件的方法有很多,上面三种方法各有优劣

名称 优点 缺点
pip freeze 包含列表完全 不相关的依赖包也会包含进来
pipreqs 只会包含项目 imports 的包 包含列表不是很完全
pip-compile 精准控制项目依赖包 需要手动操作,不方便

黑月亮
点滴记录,步步成长

现实与完美之间

1.6k 声望
24 粉丝
0 条评论
推荐阅读
centos | 修改静态 IP
设置 Centos 为使用静态 IP1 修改网络配置 {代码...} 修改后的内容如下 {代码...} 2 重启网络服务 {代码...} 3 查看地址 {代码...} 参考来源:[链接]

青阳半雪阅读 1.7k评论 3

Mysql到TiDB迁移,双写数据库兜底方案
TiDB 作为开源 NewSQL 数据库的典型代表之一,同样支持 SQL,支持事务 ACID 特性。在通讯协议上,TiDB 选择与 MySQL 完全兼容,并尽可能兼容 MySQL 的语法。因此,基于 MySQL 数据库开发的系统,大多数可以平滑迁...

京东云开发者阅读 811

封面图
三、djanjo
Django 提示:本文根据b站黑马python课整理链接指引 =&gt; 黑马程序员python企业级开发项目-手把手从0到1开发《美多商城》视图介绍和项目准备视图介绍视图就是应用中views.py文件中的函数视图的第一个参数必须为H...

玲小叮当阅读 748

Django 简介
Django简介Django 是 Python 语言的 Web 框架,开源且免费,可以用于满足快速开发网站的需求。Django 接管了 Web 开发过程中的方方面面,所以开发者可以专注于编写应用程序,而不需要重新造轮子。Django 的特点:...

Risejl阅读 719

一、Django
Django 提示:本文根据b站黑马python课整理链接指引 =&gt; 黑马程序员python企业级开发项目-手把手从0到1开发《美多商城》一、Django介绍1.1 MVT模式M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数...

玲小叮当阅读 645

Linux下Python3.9任意目录快速编译安装和配置上手实用指南
本文叙述在Linux Centos7系统下,在任意非标准目录(意味着不需要root或sudo权限)通过官方源码包编译安装Python3.9的快速安装指南。

apollo008阅读 535

通过pip安装cuda
五六年前深度学习还是个新鲜事的时候,linux下显卡驱动、CUDA的很容易把小白折磨的非常痛苦,以至于当时还有一个叫manjaro的发行版,因为驱动安装简单流行。老黄也意识到了这个问题,增加了很多新的安装方式。

cyoahs阅读 475

现实与完美之间

1.6k 声望
24 粉丝
宣传栏