Automatically create file 'requirements.txt'

Automatically create file ‘requirements.txt’

技术背景

在Python项目开发中,requirements.txt 文件用于记录项目所依赖的第三方库及其版本,方便在不同环境中重现项目所需的依赖。但手动维护该文件较为繁琐,且容易出错,因此需要自动化的方法来生成 requirements.txt 文件。

实现步骤

使用 pipreqs 生成项目所需依赖

pipreqs 可以遍历项目代码,找出实际使用的第三方库,并生成 requirements.txt 文件。

1
2
3
4
# 安装 pipreqs
pip install pipreqs
# 生成 requirements.txt 文件,/path/to/project 为项目路径
pipreqs /path/to/project

使用 pip freeze 生成环境中所有安装的依赖

pip freeze 会将当前环境中使用 pip install 安装的所有包记录下来。

1
2
3
4
# Python 3
pip3 freeze > requirements.txt
# Python 2
pip freeze > requirements.txt

使用 pipreqspip-tools 结合生成包含子依赖的 requirements.txt

  1. 安装 pipreqspip-tools
1
2
pip3 install pipreqs
pip3 install pip-tools
  1. 使用 pipreqs 生成 requirements.in 文件
1
pipreqs --savepath=requirements.in
  1. 使用 pip-compile 生成包含子依赖的 requirements.txt
1
pip-compile

可以将上述两步合并为一个命令:

1
pipreqs --savepath=requirements.in && pip-compile

Anaconda 环境下生成 requirements.txt

1
conda list -e > requirements.txt

使用 pipreqsnb 支持 Jupyter 笔记本

1
2
pip install pipreqsnb
pipreqsnb .

核心代码

使用 pipreqspip-tools 结合生成 requirements.txt

1
2
3
pip3 install pipreqs
pip3 install pip-tools
pipreqs --savepath=requirements.in && pip-compile

Anaconda 环境下生成 requirements.txt

1
conda list -e > requirements.txt

最佳实践

  • 使用虚拟环境:在创建 requirements.txt 文件前,使用虚拟环境(如 virtualenvconda),避免将不必要的全局包包含在文件中。
1
2
3
4
5
6
7
8
9
# Python 3 创建虚拟环境
pip3 install virtualenv
python3 -m venv <myenvname>
# 激活虚拟环境
source <myenvname>/bin/activate
# 安装依赖
pip install <dependencies name>
# 生成 requirements.txt 文件
pip freeze > requirements.txt
  • 结合 pipreqspip-tools:使用 pipreqs 生成项目实际使用的依赖列表,再用 pip-tools 生成包含子依赖的 requirements.txt 文件,确保项目依赖的完整性和确定性。

常见问题

pip freeze 包含了不需要的包

pip freeze 会保存环境中所有使用 pip install 安装的包,包括当前项目未使用的包。可以使用 pipreqs 代替,它只会保存项目中实际使用的包。

pipreqs 未包含子依赖

pipreqs 不会自动包含子依赖,可以结合 pip-tools 来解决这个问题。

pipreqs 生成的 requirements.txt 有重复依赖或遗漏依赖

pipreqs 可能会出现重复依赖或遗漏依赖的情况,可以手动检查和调整,或者结合其他方法(如 pip freeze)来补充。

pip freeze 输出的包没有版本信息

可以使用 pip list --format=freeze > requirements.txt 来确保输出的包包含版本信息。


Automatically create file 'requirements.txt'
https://119291.xyz/posts/automatically-create-file-requirements-txt/
作者
ww
发布于
2025年6月25日
许可协议