首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用特定的非python基础图像在docker文件中设置特定的python版本

使用特定的非python基础图像在docker文件中设置特定的python版本
EN

Stack Overflow用户
提问于 2020-01-10 19:51:32
回答 2查看 5.2K关注 0票数 1

我想用python3.5在一个特定的基础镜像上创建一个docker镜像,这个镜像是nvidia/cuda (9.0基础镜像),后者没有python环境。

我需要特定版本的原因是为了支持运行cuda10.0python3.5和一个gcc version<7,以便在同一个机器上一起编译驱动程序

当我尝试构建docker环境(见下文)时,我总是得到加载python3.6的系统更新文件

我运行的第一个版本(下面)运行了一个系统更新依赖项,它安装了python3.6。我尝试了许多变体来避免这种情况,但在最终的映像中总是以3.6结束。

欢迎任何关于使用python3.5运行此应用程序的建议

谢谢

代码语言:javascript
复制
FROM nvidia/cuda

RUN apt-get update && apt-get install -y libsm6 libxext6 libxrender-dev python3.5 python3-pip 

COPY . /app
WORKDIR /app

RUN pip3 install -r requirements.txt
ENTRYPOINT [ "python3" ]
CMD [ "app.py" ]

我尝试过的另一个变体(下面)是使用virtualenv,在这里我似乎不能强制使用python 3.5环境

代码语言:javascript
复制
FROM nvidia/cuda

RUN apt-get update && apt-get install -y --no-install-recommends libsm6 libxext6 libxrender-dev python3.5 python3-pip python3-virtualenv

ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m virtualenv --python=/usr/bin/python3 $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"

COPY . /app
WORKDIR /app

RUN pip3 install -r requirements.txt
ENTRYPOINT [ "python3" ]
CMD [ "app.py" ]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-13 03:09:15

您可以从PPA安装并照常使用:

代码语言:javascript
复制
FROM nvidia/cuda

RUN apt-get update && apt-get install -y --no-install-recommends software-properties-common \
    libsm6 libxext6 libxrender-dev curl \
    && rm -rf /var/lib/apt/lists/*

RUN echo "**** Installing Python ****" && \
    add-apt-repository ppa:deadsnakes/ppa &&  \
    apt-get install -y build-essential python3.5 python3.5-dev python3-pip && \
    curl -O https://bootstrap.pypa.io/get-pip.py && \
    python3.5 get-pip.py && \
    rm -rf /var/lib/apt/lists/*

COPY requirements.txt requirements.txt

RUN pip3.5 install -r requirements.txt

CMD ["python3.5", "app.py"]
票数 0
EN

Stack Overflow用户

发布于 2020-11-28 01:03:11

您可以尝试使用conda。我使用了几个阶段来最小化最终容器,并加速/缓存本地构建。

代码语言:javascript
复制
# first stage
FROM nvidia/cuda:11.1-base-ubuntu18.04 as builder
RUN apt-get update && apt-get install -y curl wget gcc build-essential

# install conda
RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-4.5.12-Linux-x86_64.sh -O ~/miniconda.sh && \
     /bin/bash ~/miniconda.sh -b -p /opt/conda

# create env with python 3.5
RUN /opt/conda/bin/conda create -y -n myenv python=3.5
    
# install requirements
WORKDIR /app
COPY requirements.txt /app
ENV PATH=/opt/conda/envs/myenv/bin:$PATH    
RUN pip install -r requirements.txt
RUN pip uninstall -y pip


####################
# second stage (note: FROM container must be the same as builder)
FROM nvidia/cuda:11.1-base-ubuntu18.04 as runner

# copy environment data including python
COPY --from=builder /opt/conda/envs/myenv/bin /opt/conda/envs/myenv/bin
COPY --from=builder /opt/conda/envs/myenv/lib /opt/conda/envs/myenv/lib
# do some env settings
ENV PATH=/opt/conda/envs/myenv/bin:$PATH
ENV LC_ALL=C.UTF-8
ENV LANG=C.UTF-8


####################
# final image
from runner
WORKDIR /app    
COPY ./run.py /app
CMD [ "python", "run.py"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59681129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档