论文环境安装失败, × python setup.py egg_info did not run successfully.

部署运行你感兴趣的模型镜像

问题描述

我在配置论文代码环境时直接使用pip install -r requirements.txt
出现报错在这里插入图片描述

原因

这个问题的核心是 依赖安装顺序导致的依赖提前调用:flash-attn 在安装过程中(编译阶段)需要提前导入 torch,但 pip 默认的并行下载 + 按依赖关系安装的机制,可能导致 torch 尚未安装时就开始处理 flash-attn,从而触发 ModuleNotFoundError: No module named ‘torch’。

解决办法

简单

解决方法:分阶段安装,优先处理 torch 等核心依赖
最可靠的方式是 先安装 torch 及其直接依赖,再安装其他包,确保 flash-attn 编译时能找到 torch。具体步骤如下:
步骤 1:创建 “核心依赖列表”(优先安装)
从 requirements.txt 中提取 torch 及其直接关联的包(这些包是其他依赖的基础),创建一个临时文件(例如 core_requirements.txt),内容包括:
core_requirements.txt

torch==2.2.1
torchvision==0.17.1
torchaudio==2.2.1
numpy==1.26.3  # 很多包依赖 numpy,提前安装

步骤 2:先安装核心依赖
确保 torch 等基础包先安装成功:

pip install -r core_requirements.txt

安装完成后,验证 torch 是否可用:

python -c "import torch; print('Torch 版本:', torch.__version__)"

输出 Torch 版本: 2.2.1 说明安装成功。
步骤 3:安装剩余依赖(包括 flash-attn)
核心依赖就绪后,再安装 requirements.txt 中的其他包。可以直接使用原文件(跳过已安装的核心包,pip 会自动忽略):

pip install -r requirements.txt

此时 flash-attn 编译时能找到 torch,即可正常安装。

进阶

用脚本自动分阶段安装(更方便)
如果需要频繁执行,可写一个简单的 bash 脚本(install_deps.sh),自动分阶段处理:

#!/bin/bash
步骤 1:安装核心依赖

echo “安装核心依赖(torch 等)…”

pip install torch==2.2.1 torchvision==0.17.1 torchaudio==2.2.1 numpy==1.26.3
验证 torch 是否安装成功
if ! python -c "import torch" 2>/dev/null; then
    echo "Error: torch 安装失败,请检查网络或版本兼容性"
    exit 1
fi
步骤 2:安装剩余依赖

echo “安装剩余依赖…”

pip install -r requirements.txt

echo “所有依赖安装完成”

保存后执行:

chmod +x install_deps.sh  # 赋予执行权限
./install_deps.sh

为什么这种方式有效?
flash-attn 等包的安装分为 “下载”→“编译 / 生成元数据”→“安装” 三个阶段,其中 “编译 / 生成元数据” 阶段需要调用 torch(属于运行时依赖,但提前在编译阶段被引用)。
分阶段安装确保 torch 在 flash-attn 开始编译前就已就绪,避免 “找不到 torch” 的错误。
总结
由于 flash-attn 等包的特殊依赖机制(编译阶段依赖 torch),直接用 pip install -r requirements.txt 可能因顺序问题失败。通过 “先安装核心依赖(torch 等),再安装其他包” 的分阶段方式,即可简单高效地解决问题。

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值