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

Docker中为Python 3.11安装pip报错:找不到get-pip.py文件

问题分析与解决

核心错误原因

你用了curl -sS -O https://bootstrap.pypa.io/get-pip.py | python3.11这个命令,这里的管道|会直接把curl的输出传给Python执行,不会将get-pip.py文件保存到容器的文件系统中,所以下一个RUN python3.11 get-pip.py自然找不到文件。

修正后的Dockerfile

直接把curl的输出通过管道传给Python执行即可,同时还需要修复其他几个影响镜像构建和运行的问题:

# 使用Ubuntu 20.04基础镜像
FROM ubuntu:20.04

# 避免交互式弹窗
ENV TZ=Europe \
    DEBIAN_FRONTEND=noninteractive

# 更新系统并安装依赖包
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
       tzdata \
       build-essential \
       checkinstall \
       libreadline-gplv2-dev \
       libncursesw5-dev \
       libssl-dev \
       libsqlite3-dev \
       tk-dev \
       libgdbm-dev \
       libc6-dev \
       libbz2-dev \
       software-properties-common \
    && add-apt-repository ppa:deadsnakes/ppa \
    && apt-get update \
    && apt-get install -y --no-install-recommends python3.11 \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 直接通过管道安装pip,无需保存文件
RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11

# 安装指定版本的Poetry
ENV POETRY_VERSION 1.4.2
RUN python3.11 -m pip install "poetry==$POETRY_VERSION"

# 设置工作目录为Django项目根目录
WORKDIR /website

# 复制依赖配置文件,利用Docker缓存
COPY pyproject.toml poetry.lock ./

# 安装项目依赖(生成虚拟环境在容器内)
RUN poetry install --no-root

# 复制整个Django项目代码
COPY . .

# 直接用poetry run启动Django服务,无需进入shell
CMD ["poetry", "run", "python", "manage.py", "runserver", "0.0.0.0:8000"]

关键修正点说明

  • pip安装:去掉-O参数和后续的python3.11 get-pip.py,直接用curl ... | python3.11执行安装,彻底解决文件找不到的问题。
  • WORKDIR位置:提前设置WORKDIR /website,确保复制配置文件后,poetry能正确读取pyproject.toml和poetry.lock。
  • Poetry使用:用poetry install --no-root先安装依赖,再复制项目代码,利用Docker缓存机制,避免每次代码变更都重新安装依赖;替换交互式的poetry shell为poetry run直接启动服务,符合Docker非交互式运行的要求。
  • 镜像优化:添加apt-get clean和rm -rf /var/lib/apt/lists/*清理系统缓存,减小镜像体积。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:23:08