requirements.txt
是 Python 项目中用于管理依赖包的标准文件,它列出了项目所需的所有第三方库及其版本要求。这个文件通常被 pip
使用来安装所有依赖项(例如通过 pip install -r requirements.txt
)。
下面是对 requirements.txt
文件的详细语法讲解:
📝 基本格式
每一行表示一个依赖项或注释。常见的格式如下:
package_name==version
示例:
requests==2.31.0
numpy>=1.21
pandas
flask>=2.0.0,<3.0.0
🔢 版本号说明符(Version Specifiers)
可以使用以下操作符来指定版本范围:
操作符 | 含义 | 示例 |
---|---|---|
== |
精确匹配 | flask==2.3.0 |
>= |
大于等于 | numpy>=1.21 |
> |
大于 | django>3.2 |
<= |
小于等于 | pillow<=9.5.0 |
< |
小于 | pandas<2.0 |
!= |
不等于 | gunicorn!=20.1.0 |
~= |
兼容发布(PEP 440) |
django~=3.1 表示 >=3.1 且 <3.2 |
📦 包来源与额外选项
1. 安装来自 PyPI 的包(默认)
requests
2. 安装来自特定 URL 或 VCS(Git、Mercurial 等)
你可以直接从 Git 仓库安装:
git+https://github.com/psf/requests.git@v2.31.0#egg=requests
或者使用 -e
安装为可编辑模式(开发模式):
-e git+https://github.com/psf/requests.git@v2.31.0#egg=requests
3. 安装本地 .whl
或 .tar.gz
文件
./mylib-1.0.0-py3-none-any.whl
🧩 环境标记(Environment Markers)
你可以根据运行环境有条件地安装某些包:
pywin32; sys_platform == 'win32'
cryptography; sys_platform != 'linux'
常见变量包括:
-
sys_platform
: 当前操作系统(如'win32'
,'darwin'
,'linux'
) -
python_version
: Python 版本(如'3.8'
,'3.11'
) -
implementation_name
: 解释器名称(如'cpython'
,'pypy'
)
🗂️ 子文件引用(Include Other Requirements Files)
你可以使用 -r
引用其他 requirements 文件:
-r common.txt
-r dev.txt
这在大型项目中非常有用,比如区分生产、测试、开发等不同环境的依赖。
📌 注释与空行
以 #
开头的行为注释:
# 这是注释
requests==2.31.0 # 安装最新稳定版
空行会被忽略。
🧪 常见用法示例
示例 1:基本依赖
flask==2.3.0
sqlalchemy>=1.4
示例 2:带版本约束
pandas>=1.3,<2.0
示例 3:条件安装
winreg; sys_platform == "win32"
示例 4:VCS 安装
git+https://github.com/user/repo.git@branch#egg=my_package
✅ 最佳实践建议
-
固定版本:生产环境中尽量使用
==
固定版本,避免意外升级带来的问题。 - 使用虚拟环境:确保你在一个干净的虚拟环境中生成 requirements 文件。
-
生成方法:
pip freeze > requirements.txt
-
区分环境:
-
requirements.txt
(主依赖) -
dev-requirements.txt
(开发依赖) -
test-requirements.txt
(测试依赖)
-
🛠 工具推荐
如果你有具体的 requirements.txt
内容需要解释或优化,也可以贴出来我帮你分析。