指定Python3.8后Docker仍安装Python3.6的问题求助
问题排查与解决方案
问题原因
- 你的Dockerfile中创建的软链接
ln -s /usr/bin/python3 /usr/bin/python,实际是将python指向了Ubuntu 18.04默认的Python3.6,而非你安装的Python3.8。 - 安装的
python3-pip是系统默认Python3.6对应的包管理工具,后续pip install的依赖会被安装到Python3.6的目录下,运行代码时自然触发Python3.6的弃用警告。
修改后的Dockerfile
FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y software-properties-common && \ add-apt-repository ppa:deadsnakes/ppa && apt-get update && apt-get install -y \ python3.8 \ python3.8-distutils \ && rm -rf /var/lib/apt/lists/* # 为Python3.8安装对应版本的pip RUN python3.8 -m ensurepip --upgrade # 将python和pip强制指向Python3.8版本 RUN ln -sf /usr/bin/python3.8 /usr/bin/python RUN ln -sf /usr/local/bin/pip3.8 /usr/bin/pip # 安装项目依赖 COPY requirements.txt requirements.txt RUN pip install -r requirements.txt
修改说明
- 新增
python3.8-distutils依赖:这是Python3.8运行ensurepip命令必需的组件,否则无法正常安装对应版本的pip。 - 使用
python3.8 -m ensurepip --upgrade安装Python3.8专属的pip,替代系统默认的python3-pip。 - 软链接改用
-f参数:强制覆盖原有指向Python3.6的软链接,确保python和pip命令默认调用Python3.8版本。
验证方式
构建镜像后,进入容器执行以下命令,确认版本正确:
python --version # 应显示Python 3.8.x pip --version # 应显示对应Python3.8的pip版本
内容的提问来源于stack exchange,提问作者Lihka_nonem
相关产品推荐
相关产品推荐

