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

Docker构建失败:安装gymnasium[atari]时ale-py版本匹配错误求助

问题描述

我尝试用以下Dockerfile构建Python镜像:

FROM python:3.10  
WORKDIR /app  
COPY ./requirements.txt .  
RUN pip install --no-cache-dir -r requirements.txt  

requirements.txt内容如下:

DI-engine==0.5.1
gymnasium[atari]

构建时触发如下错误:

ERROR: Could not find a version that satisfies the requirement ale-py~=0.8.1; extra == "atari" (from shimmy[atari]) (from versions: none)
ERROR: No matching distribution found for ale-py~=0.8.1; extra == "atari"

我尝试过更换Python 3.8~3.12版本、指定安装ale-py 0.7.6~0.8.1版本、直接安装源码包等方法,均无法解决问题,怀疑Docker环境下的依赖缺失导致无法安装ale-py。

解决方案

1. 补充系统编译依赖

ale-py的安装需要基础编译工具和SDL2等库,官方Python镜像默认未包含这些依赖。修改Dockerfile,先安装系统级依赖:

FROM python:3.10  
WORKDIR /app  

# 安装ale-py编译所需的系统依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    cmake \
    libsdl2-dev \
    wget \
    unzip \
    && rm -rf /var/lib/apt/lists/*

COPY ./requirements.txt .  
RUN pip install --no-cache-dir -r requirements.txt  

2. 固定兼容的依赖版本

gymnasium[atari]依赖的shimmy[atari]对ale-py版本的约束可能导致匹配失败,可直接固定一套兼容的依赖版本。修改requirements.txt:

DI-engine==0.5.1
gymnasium[atari]==0.28.1
shimmy[atari]==0.2.1
ale-py==0.8.1

同时配合方案1中的系统依赖安装步骤。

3. 手动安装预编译轮子

如果编译仍然失败,可直接下载对应平台的预编译ale-py轮子安装。以下示例针对Python 3.10 x86_64架构:

FROM python:3.10  
WORKDIR /app  

# 安装预编译的ale-py轮子
RUN pip install https://github.com/Farama-Foundation/Arcade-Learning-Environment/releases/download/0.8.1/ale_py-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

COPY ./requirements.txt .  
RUN pip install --no-cache-dir -r requirements.txt  

注意根据你的Python版本和镜像架构,选择官方发布页对应的轮子包。

4. 使用现成的Atari环境镜像

如果不想手动处理依赖,可直接使用Farama Foundation提供的预配置镜像:

FROM faramafoundation/atari-py:latest
WORKDIR /app
COPY ./requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:22:36