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

基于Ubuntu18.04的Docker镜像默认Python3.6,如何仅保留Python3.7?

解决Docker镜像中Python 3.7默认版本问题

我来帮你搞定这个Ubuntu 18.04 Docker镜像里Python版本的坑~你遇到的问题主要有两个原因:一是RUN alias只在当前shell进程生效,容器启动后不会继承;二是系统默认的pip3还是绑定Python 3.6,导致依赖装错了位置。下面是修改后的Dockerfile和详细说明:


修改后的Dockerfile

FROM ubuntu:18.04

# 配置字符编码,避免中文乱码或编码相关报错
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8

# 安装Python3.7并清理旧版本
RUN apt-get update && apt-get install -y --no-install-recommends \
    python3.7 \
    python3.7-dev \
    python3.7-distutils \
    && apt-get purge -y python3.6 python3.6-dev \
    && apt-get autoremove -y \
    && rm -rf /var/lib/apt/lists/*

# 将Python3.7设置为系统默认的python/python3
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1 \
    && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1 \
    # 升级pip到最新版本,确保绑定Python3.7
    && python3 -m pip install --upgrade pip setuptools

# 设置规范的工作目录
WORKDIR /app

# 优先拷贝requirements.txt,利用Docker构建缓存优化
COPY requirements.txt .
# 使用绑定Python3.7的pip安装依赖
RUN pip install -r requirements.txt

# 拷贝你的应用代码(如果需要的话,取消注释下面一行)
# COPY . .

关键改动说明

  • 彻底移除Python3.6:通过apt-get purge卸载系统自带的Python3.6及其开发包,再用autoremove清理残留依赖,从根源避免版本冲突。
  • 系统层面设置默认版本:用update-alternatives工具将python和python3命令指向Python3.7,这是系统级的配置,无论哪个shell进程都会生效,比alias靠谱得多。
  • 绑定Python3.7的pip:用python3 -m pip来升级pip,确保pip属于Python3.7环境,之后安装的依赖包会直接存到Python3.7的site-packages目录,解决手动运行Python3.7找不到模块的问题。
  • 优化构建缓存:先拷贝requirements.txt再安装依赖,只有当requirements.txt内容变化时,Docker才会重新执行依赖安装步骤,大幅加快重复构建的速度。

验证方法

构建镜像后,运行容器执行以下命令确认版本:

python --version  # 应输出Python 3.7.x
pip --version     # 应显示关联到Python 3.7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:13:32