python基础语法学习: requirements.txt

文章目录

  • requirements.txt
    • [requiremtnes 长什么样?](#requiremtnes 长什么样?)
    • [生成 requirements.txt](#生成 requirements.txt)
      • [方法一: 手动写](#方法一: 手动写)
        • [方法二: 自动导出当前环境](#方法二: 自动导出当前环境)
        • [方法四: 只导出直接依赖](#方法四: 只导出直接依赖)
    • 实际工作流

requirements.txt

requirements.txt 是一个纯文本文件 ,用来记录一个 Python 项目所依赖的第三方包及其版本。它的作用是让其他人(或另一台机器)能够一键复现项目所需的运行环境。

bash 复制代码
pip install -r requirements.txt

一行命令,就能把所有依赖装好。

requiremtnes 长什么样?

最简单的形式,每行一个包名:

复制代码
requests
flask
numpy

带版本约束:

复制代码
requests==2.31.0
flask>=3.0.0
numpy~=1.26.0

还可以加注释和空行:

复制代码
# Web 框架
flask==3.0.0

# 数据处理
pandas==2.2.0
numpy==1.26.4

版本约束符号

写法 含义 示例
== 精确等于 flask==3.0.0
>= 大于等于 numpy>=1.20
<= 小于等于 numpy<=2.0
~= 兼容版本(推荐) numpy~=1.26.0 等价于 >=1.26.0, ==1.26.*
!= 排除某版本 flask!=3.0.1
> < 严格大于/小于 django>4.0
不写 装最新版 requests

~= 是最实用的 :它允许补丁版本更新(修 bug),但不允许次版本升级(避免破坏性变更)。比如 ~=1.26.0 会装 1.26.1、1.26.9,但不会装 1.27.0。

组合约束用逗号:

复制代码
django>=4.2,<5.0

生成 requirements.txt

方法一: 手动写

直接写出你确定要用的包,推荐用 == 锁定版本

方法二: 自动导出当前环境
objc 复制代码
pip freeze > requirements.txt

pip freeze 会列出当前虚拟环境中所有已经安装的包 (包括间接依赖), 输出成 包名 == 格式格式

生成的内容可能很长:

例如:

复制代码
blinker==1.7.0
click==8.1.7
Flask==3.0.0
itsdangerous==2.1.2
Jinja2==3.1.3
MarkupSafe==2.1.5
Werkzeug==3.0.1

注意:这会包含所有间接依赖,环境迁移最保险,但文件不"干净"。

方法四: 只导出直接依赖

用 poetry / pipenv 管理

现代工具会分开管理 "直接依赖" 和 "锁定文件"

objc 复制代码
# Poetry
poetry add requests
poetry export -f requirements.txt --output requirements.txt

实际工作流

复制代码
# 1. 创建虚拟环境
python -m venv venv

# 2. 激活(Linux/Mac)
source venv/bin/activate
# Windows
venv\Scripts\activate

# 3. 安装依赖
pip install -r requirements.txt

# 4. 开发中装了新包
pip install requests

# 5. 更新 requirements.txt
pip freeze > requirements.txt
相关推荐
H.莓飛8 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
wangchunyu1148 小时前
JAVA AQS与Lock实现原理(含CAS)
java·开发语言·word
爱喝水的鱼丶9 小时前
SAP-ABAP:ECC→S/4HANA ABAP 迁移升级指南——程序改造、语法兼容与性能优化 导语
运维·开发语言·性能优化·sap·abap·经验交流·开发交流
小灰灰搞电子10 小时前
Rust+Slint 实现FTP客户端调试助手源码分享
开发语言·后端·rust
外收内放10 小时前
面向对象高级(实战案例)
开发语言·python·学习
专业程序开发源10 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
FPGA小迷弟10 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
c++·python·ai·plotly·django·ai编程·claude
卷无止境11 小时前
面向arm64桌面客户端开发全景:语言、框架与生态
后端·python
薛定e的猫咪11 小时前
(ICLR 2020)MAML 靠的不是快速学习,而是特征复用
人工智能·深度学习·学习·算法·机器学习
fanruitian11 小时前
python else用法
开发语言·python