You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Slurm运行Python作业时evaluate包安装失败报错问题

报错根因

几个报错是连锁出现的,不存在多个独立问题:

  • 参考的方案默认集群预装了virtualenv工具,但加载的PYTHON/3.7.4模块没有带这个命令,直接调用就会报virtualenv: command not found,虚拟环境从一开始就没创建成功。
  • 虚拟环境不存在,自然找不到/env/bin/activate激活文件,后续装包操作根本没有运行在隔离环境中。
  • 集群默认pip源要么没有同步evaluate==0.1.2版本,要么当前用户没有全局Python环境的装包权限,直接装包必然报找不到对应版本的错误,最终运行脚本时触发ModuleNotFoundError。
  • 不要尝试把本地Python包路径加到服务器的PYTHONPATH里,本地和集群的操作系统、CPU架构、底层编译依赖版本大概率不一致,硬加不仅包无法正常运行,确实有概率搞乱系统Python的依赖环境,完全没必要这么操作。
解决步骤

所有操作都在个人作业目录下完成,不会修改任何系统级配置,不用担心破坏原有运行环境:

  • 先在登录节点提前准备好运行环境,不要把创建虚拟环境、安装依赖的步骤全塞到Slurm作业脚本里交给计算节点执行。首先加载需要用到的Python模块:
    module load PYTHON/3.7.4
    
  • 用Python自带的venv模块创建独立虚拟环境,不需要依赖未预装的virtualenv:
    python -m venv ./job_env
    
  • 激活刚创建的虚拟环境,升级pip并切换国内镜像源解决找不到包的问题,再安装所需依赖:
    source ./job_env/bin/activate
    pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
    pip install evaluate==0.1.2
    
    如果这步提示Python版本不兼容,就退出虚拟环境,换集群里更高版本的Python模块(3.8及以上均可),重复上述建环境、装包的步骤即可。
  • 编写Slurm提交脚本,不要加自动创建虚拟环境的逻辑,直接加载模块、激活提前建好的环境再跑脚本即可,参考示例:
    #!/bin/bash
    #SBATCH --job-name=comet_eval
    #SBATCH --output=run_%j.log
    #SBATCH --nodes=1
    #SBATCH --ntasks-per-node=1
    #SBATCH --cpus-per-task=4
    
    # 加载依赖模块,和之前使用的版本保持一致
    module load GCC/10.2.0
    module load ROCM/5.1.1
    module load mkl/2018.4
    module load PYTHON/3.7.4
    
    # 激活虚拟环境,建议写虚拟环境的绝对路径,避免调度时工作目录异常找不到文件
    source /个人用户目录/作业所在路径/job_env/bin/activate
    
    # 运行计算脚本
    python eval_comet.py
    
  • 写完脚本直接用sbatch命令提交即可,所有依赖都存放在个人目录的虚拟环境中,和系统环境完全隔离,不会产生冲突。

内容的提问来源于stack exchange,提问作者zest16

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:18:18