博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django | requirement.txt 生成
阅读量:6503 次
发布时间:2019-06-24

本文共 2323 字,大约阅读时间需要 7 分钟。

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.3djangorestframework==3.1.3docopt==0.6.2gnureadline==6.3.3ipython==3.2.1MySQL-python==1.2.3pipreqs==0.2.8Pygments==2.0.2requests==2.7.0wheel==0.24.0yarg==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] 
Options: --use-local Use ONLY local package information instead of querying PyPI --debug Print debug information --savepath
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

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

Django == 1.8.3Pygments == 2.0.2

引入问题

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

pip-compile

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

使用步骤 1

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

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

djangoyolk

使用步骤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.3yolk==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 精准控制项目依赖包 需要手动操作,不方便

转载自: 作者: kycool

你可能感兴趣的文章
chrome扩展demo1-小时钟
查看>>
如何优雅地使用 Sublime Text
查看>>
zabbix3.2监控linux磁盘IO
查看>>
2017-12-24 手机编程环境初尝试-用AIDE开发Android应用
查看>>
pyqt5的下载进度条 实现模板
查看>>
Flink1.7.2 local WordCount源码分析
查看>>
盘点抖音源码中的广告变现方式
查看>>
星际荣耀获鼎晖投资A+轮投资,上半年将进行首枚入轨运载火箭
查看>>
Linux基础命令---显示路由表route
查看>>
金三银四,2019大厂Android高级工程师面试题整理
查看>>
PostgreSQL 快速给指定表每个字段创建索引 - 1
查看>>
AutoScaling伸缩组伸缩模式之停机回收模式
查看>>
基于阿里雲Oracle12cR2(Linux)實例靜默安装Cloud Control 13c 13.3
查看>>
硬科技产业的创新与难点,核心都在“技术落地”
查看>>
通过DataWorks数据集成归档日志服务数据至MaxCompute进行离线分析
查看>>
「镁客·请讲」翼辉信息黄晓清:国产系统需有自己的灵魂,一行一行去码并不可怕...
查看>>
【软件】Eclipse 下载
查看>>
阿里云全球19个地域节点,哪个节点的服务器好,速度快?
查看>>
PostgreSQL 9.6 for Centos7.4 最佳实践安装
查看>>
java B2B2C Springcloud电子商务平台源码 -Feign之源码解析
查看>>