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
相关推荐
Godspeed Zhao9 小时前
从零开始学AI25——无监督学习之层次聚类
学习·机器学习·聚类
沐晓时光10 小时前
C语言入门,内存函数知识讲解
c语言·开发语言
用户9562562542914 小时前
跟做:Firecrawl 单页转 Markdown 再丢进沙箱总结
python·api
威哥爱编程14 小时前
模拟面试智能体开发实战 02:回答等半分钟,谁还愿意练?把服务端和流式输出搭起来
python·agent·harmonyos
威哥爱编程14 小时前
模拟面试智能体开发实战 01:面试挂了都不知道挂在哪?用 Python 给自己造一个随叫随到的 AI 面试官
python·agent·harmonyos
2601_9679801115 小时前
Python行情API量化 02:顺序拉 20 要 2 秒?并发批量把时间压到 0.5 秒
python·api·限流·并发·量化
伞伞悦读15 小时前
【第81期】特征缩放怎么选:标准化、MinMax 与 Robust 的原理、泄漏对照和完整实验
人工智能·python·深度学习·机器学习
新*15 小时前
从一段 WebSocket 代码聊开:bytes 不是 zlib、binaryType 决定一切,15MB 大消息的零拷贝优化
javascript·python·websocket·性能优化·blob·zlib·arraybuffer
David猪大卫16 小时前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习
HPtiger16 小时前
C++ 入门笔记:从 C 到 C++ 的核心过渡(命名空间、输入输出、缺省参数、重载、引用、内联)
c语言·c++·学习