目录
python特别是在项目迁移环境时,项目所需要的运行环境依赖包。特别麻烦,requirements.txt文件列出了项目所需的全部依赖包及其版本号,可以帮助确保在新环境中正确安装和配置所需的软件包。使用requirements.txt可以更好地支持跨不同操作系统或平台的开发,通过统一管理依赖项,可以轻松地在不同的操作系统上进行开发和部署。
1.requirements.txt文件介绍
requirements.txt 文件可以使开发人员明确指定项目所需的依赖项及其精确的版本号,保证开发者使用相同的依赖配置,减少由于依赖版本差异引起的不一致性和错误。
生成 requirements.txt 文件的方法通常是通过使用 pip 工具,以当前环境中已安装的包为基础来生成。这样可以确保在新环境中能够以相同的依赖版本进行安装,减少因环境差异而导致的问题,并提高迁移过程的可靠性和一致性。
文件内容格式:库名称==版本号
说点儿题外话:如何查看当前项目的含有哪些依赖?
pip freeze
与pip list
都用于列出当前Python环境中已安装的第三方库
-
pip freeze 比 pip list 的包少:因为pip , wheel , setuptools 等包,是自带的而无法 (un)install 的。考虑到pip freeze的用途,所以这些包并没有显示。
-
显示格式不同:
pip freeze
命令的输出格式是适合生成requirements.txt文件
charset-normalizer==3.1.0
click==7.1.2
cycler==0.11.0
docopt==0.6.2
et-xmlfile==1.1.0
fonttools==4.38.0
idna==3.4
pip list
命令的输出格式更简洁
Package Version
------------------ ----------
certifi 2022.12.7
charset-normalizer 3.1.0
click 7.1.2
cycler 0.11.0
docopt 0.6.2
2.requirements.txt使用
1.pip freeze方式
(1) 使用pip freeze命令生成requirements.txt文件
pip freeze > requirements.txt
pip install --upgrade -r requirements.txt # 更新requirements文件
此种方式会将环境中所有的包都打包进去,适合单虚拟环境
(2) 安装依赖
pip install -r requirements.txt
2.pipreqs方式 [推荐]
pip freeze的缺陷:
-
pip freeze
会保存环境中的所有包,包括你当前项目中未使用的包(如果你没有使用虚拟环境)。 -
有时你只需要为一个新项目创建
requirements.txt
文件,而无需安装模块。
使用 pipreqs 写入requirements.txt 只是程序中所用到的包,并不是电脑中安装的所有的包
(1)安装 pipreqs
pip install pipreqs
(2)pipreqs 生成requirements.txt文件
在当前项目工作根路径下,调整编码格式为utf8
pipreqs . --encoding=utf8 --force
pipreqs /home/project/location
Successfully saved requirements file in /home/project/location/requirements.txt
注意:
--encoding=utf8
使用utf8编码,否则会报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 406: illegal multibyte sequence
--force
强制执行,若requirements.txt存在时覆盖。
知识扩展
(仅提供思路,以便各阶段学习者对比学习,找到适合自己的方法才最关键)
-
pip wheel 实现 Python 依赖包的离线安装 (参考博文)
-
使用
pipenv
生成/安装 requirements.txt 文件 -
使用
conda
生成/安装 requirements.txt 文件
常见问题及解决
等待补充ing…