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
相关推荐
老歌老听老掉牙21 分钟前
空间曲线数据的拼接与几何变换分析
python·曲线
Cc.Y36 分钟前
Java零基础入门:字符串深度掌握——从基础API到StringBuilder性能优化
java·开发语言·性能优化
databook4 小时前
使用 SciPy 库进行时间序列分析
python·数据分析·scipy
java资料站5 小时前
十一、评估测试
开发语言·人工智能·python
szial5 小时前
网络爬虫与 CDP 实战(二):浏览器能访问,Python 却被拒绝?拆开登录态与 CSRF
爬虫·python·csrf
左手の明天5 小时前
SLIP 协议封装与解析详解:原理、C 代码与实战案例
linux·c语言·开发语言·c++
扶风ff5 小时前
新品知识更新太快?用练题簿在线刷题,安排企业培训的小测与复盘
前端·学习·小程序
海上小飞龙5 小时前
【KMP算法-下篇】同一道题:Java 库函数 2600 微秒,手写 KMP 16 微秒
java·开发语言·算法
青少儿编程课堂6 小时前
后缀自动机解析:本质不同子串与最长重复片段统计
c++·python·算法·bfs·信息学竞赛
朝朝辞暮i6 小时前
C++ 第 12 课:局部变量、作用域、变量生命周期
开发语言·c++·算法