Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Docker中没有名为conda的模块_Python_Docker_Dockerfile_Conda_Miniconda - Fatal编程技术网

Python Docker中没有名为conda的模块

Python Docker中没有名为conda的模块,python,docker,dockerfile,conda,miniconda,Python,Docker,Dockerfile,Conda,Miniconda,我正在尝试创建一个装有miniconda3的docker图像。我不想直接使用,而是想从头开始创建自己的Dockerfile,并将ContinuMio/miniconda3图像的Dockerfile命令放在那里,它们是: FROM debian:latest # $ docker build . -t continuumio/miniconda3:latest -t continuumio/miniconda3:4.5.11 # $ docker run --rm -it continuum

我正在尝试创建一个装有miniconda3的docker图像。我不想直接使用,而是想从头开始创建自己的Dockerfile,并将ContinuMio/miniconda3图像的Dockerfile命令放在那里,它们是:

FROM debian:latest

#  $ docker build . -t continuumio/miniconda3:latest -t continuumio/miniconda3:4.5.11
#  $ docker run --rm -it continuumio/miniconda3:latest /bin/bash
#  $ docker push continuumio/miniconda3:latest
#  $ docker push continuumio/miniconda3:4.5.11

ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
ENV PATH /opt/conda/bin:$PATH

RUN apt-get update --fix-missing && \
    apt-get install -y wget bzip2 ca-certificates curl git && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-4.5.11-Linux-x86_64.sh -O ~/miniconda.sh && \
    /bin/bash ~/miniconda.sh -b -p /opt/conda && \
    rm ~/miniconda.sh && \
    /opt/conda/bin/conda clean -tipsy && \
    ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
    echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \
    echo "conda activate base" >> ~/.bashrc

ENV TINI_VERSION v0.16.1
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /usr/bin/tini
RUN chmod +x /usr/bin/tini

ENTRYPOINT [ "/usr/bin/tini", "--" ]
CMD [ "/bin/bash" ]
构建和运行容器工作正常。以下是容器中
conda info
的输出,以供参考:

(base) root@def48bd1ed5d:/# conda info

     active environment : base
    active env location : /opt/conda
            shell level : 1
       user config file : /root/.condarc
 populated config files : 
          conda version : 4.5.11
    conda-build version : not installed
         python version : 3.7.0.final.0
       base environment : /opt/conda  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/free/linux-64
                          https://repo.anaconda.com/pkgs/free/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/pro/linux-64
                          https://repo.anaconda.com/pkgs/pro/noarch
          package cache : /opt/conda/pkgs
                          /root/.conda/pkgs
       envs directories : /opt/conda/envs
                          /root/.conda/envs
               platform : linux-64
             user-agent : conda/4.5.11 requests/2.19.1 CPython/3.7.0 Linux/4.4.0-187-generic debian/10 glibc/2.28
                UID:GID : 0:0
             netrc file : None
           offline mode : False
每当我尝试使用
conda
安装模块时,就会出现问题,例如
conda install jupyter-y
。该过程开始,在安装过程中的某个时刻,我收到以下错误:

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
Traceback (most recent call last):
  File "/opt/conda/bin/conda", line 7, in <module>
    from conda.cli import main
ModuleNotFoundError: No module named 'conda'
(base) root@def48bd1ed5d:/# 
miniconda3
Dockerfile内安装行中指定的版本不是最新版本 用于构建本地映像的将安装
miniconda3-4.5.11
而不是最新版本。你可以在这里找到它:

...
RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-4.5.11-Linux-x86_64.sh -O ~/miniconda.sh && \
    /bin/bash ~/miniconda.sh -b -p /opt/conda &&
...
也可以通过这种方式使用
docker

$docker build——标记miniconda3:test。
$docker docker运行-i-t miniconda3:test/bin/bash
$docker历史记录--无trunc miniconda3:测试| grep miniconda3
/垃圾箱/垃圾箱-垃圾箱-安静https://repo.anaconda.com/miniconda/Miniconda3-4.5.11-Linux-x86_64.sh -O~/miniconda.sh&。。。
好的,现在让我们看看官方的
continuMio/miniconda3

$docker run-i-t continumio/miniconda3/bin/bash
然后:

$docker history——无trunc ContinuMio/miniconda3 | grep miniconda3
/垃圾箱/垃圾箱-垃圾箱-安静https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O~/miniconda.sh&。。。
如您所见,DockerHub安装的是最新的
miniconda3
4.8.2
,而不是
4.5.11
版本。因此,从该
Dockerfile
构建的本地映像将生成具有
miniconda3:4.5.11
的容器

python
version中的更改中断了
conda
现在,让我们找出
conda
失败的原因。首先构建并运行:

$docker build——标记miniconda3:test。
$docker docker运行-i-t miniconda3:test/bin/bash
获取一些信息:

(基本)root@61cafd17d954:/#康达信息
活动环境:基础
活动环境位置:/opt/conda
外壳级别:1
用户配置文件:/root/.condarc
填充的配置文件:
康达版本:4.5.11
conda生成版本:未安装
python版本:3.7.0.final.0
基本环境:/opt/conda(可写)
频道URL:https://repo.anaconda.com/pkgs/main/linux-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/free/linux-64
https://repo.anaconda.com/pkgs/free/noarch
https://repo.anaconda.com/pkgs/r/linux-64
https://repo.anaconda.com/pkgs/r/noarch
https://repo.anaconda.com/pkgs/pro/linux-64
https://repo.anaconda.com/pkgs/pro/noarch
包缓存:/opt/conda/pkgs
/root/.conda/pkgs
环境目录:/opt/conda/envs
/root/.conda/envs
平台:linux-64
用户代理:conda/4.5.11 requests/2.19.1 CPython/3.7.0 Linux/5.4.0-48-generic debian/10 glibc/2.28
UID:GID:0:0
netrc文件:无
脱机模式:False
好的,我们有
conda:4.5.11
python:3.7.0

现在,我们将安装
jupyter
,例如:

(基本)root@61cafd17d954:/#康达安装jupyter
您可能会注意到,此安装将更新
python

将更新以下软件包:
...
python:3.7.0-hc3d631a_0-->3.8.5-h7579374_1
...
如果继续,这将更新
python
,并将中断
conda

。。。
准备事务:完成
验证事务:完成
执行事务:完成
回溯(最近一次呼叫最后一次):
文件“/opt/conda/bin/conda”,第7行,在
从conda.cli导入main
ModuleNotFoundError:没有名为“conda”的模块
这是一个众所周知的问题,您可以在答案和官方康达回购协议中找到更多关于这个问题的信息:

更新
conda
或对
miniconda3:最新版本使用
Dockerfile
此问题有3种可能的解决方案:

  • 通过替换此行编辑您的
    Dockerfile
  • 运行wget——安静https://repo.anaconda.com/miniconda/Miniconda3-4.5.11-Linux-x86_64.sh -O~/miniconda.sh&&\
    

    运行wget——安静https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O~/miniconda.sh&&\
    
  • 使用
    continuMio
    中最新的官方
    Dockerfile
    ,您可以找到它

  • 使用前更新容器内的
    conda

  • (基本)root@61cafd17d954:/#康达更新康达
    
    感谢您提供非常详细的解释和参考资料。它最终解决了这个问题。
    ...
    RUN wget --quiet https://repo.anaconda.com/miniconda/Miniconda3-4.5.11-Linux-x86_64.sh -O ~/miniconda.sh && \
        /bin/bash ~/miniconda.sh -b -p /opt/conda &&
    ...