Python Can';t在docker中重新创建Conda环境

Python Can';t在docker中重新创建Conda环境,python,python-3.x,docker,dockerfile,miniconda,Python,Python 3.x,Docker,Dockerfile,Miniconda,我从miniconda3的新安装创建了一个conda环境 之后,我将其导出,这是文件的内容(我唯一的额外安装是flask): 现在我想要的是在一个docket映像中重新创建这个环境,所以我创建了这个docket文件 FROM continuumio/miniconda3 ADD * myappdir/ RUN conda env create -f /myappdir/environment.yml 但它将以以下方式失败: Step 1/5 : FROM continuumio/minicon

我从miniconda3的新安装创建了一个conda环境

之后,我将其导出,这是文件的内容(我唯一的额外安装是flask):

现在我想要的是在一个docket映像中重新创建这个环境,所以我创建了这个docket文件

FROM continuumio/miniconda3
ADD * myappdir/
RUN conda env create -f /myappdir/environment.yml
但它将以以下方式失败:

Step 1/5 : FROM continuumio/miniconda3
 ---> d3c252f8727b
Step 2/5 : ADD * myappdir/
 ---> Using cache
 ---> 2afbf5ea75bd
Step 3/5 : RUN conda env create -f /myappdir/environment.yml
 ---> Running in 7f916bd46979
Solving environment: ...working... failed

ResolvePackageNotFound: 
  - tk==8.6.8=ha441bb4_0
  - ncurses==6.1=h0a44026_1
  - markupsafe==1.1.0=py37h1de35cc_0
  - readline==7.0=h1de35cc_5
  - zlib==1.2.11=h1de35cc_3
  - openssl==1.1.1a=h1de35cc_0
  - xz==5.2.4=h1de35cc_4
  - libcxxabi==4.0.1=hcfea43d_1
  - libcxx==4.0.1=hcfea43d_1
  - libffi==3.2.1=h475c297_4
  - sqlite==3.26.0=ha441bb4_0
  - python==3.7.1=haf84260_7
  - libedit==3.1.20170329=hb402a30_2
为什么会这样?如果我尝试做同样的事情来创建另一个环境,它会起作用。如果删除构建版本,则会解析某些依赖项(我指的是依赖项中的第三个坐标)

我试着添加更多像康达·福吉这样的频道,但什么都没有

我的.condarc文件也是空的


有人知道如何解决这个问题吗?

我也遇到过类似的问题,我找到了多种解决方法。您的方法的主要问题是conda不是独立于平台的,因此将强制环境使用pip

1。康达式解决方案

更改my_env.yml,使除pip之外的所有依赖项都位于pip依赖项之下。请注意,在pip下移动时,语法是不同的

例如:

name: myenv
channels:
  - defaults
dependencies:
   - pip=18.1
   - pip:
     - wheel==0.32.3
然后转到Dockerfile并添加以下行:

RUN conda env update -n base --file myenv.yml
RUN python -m pip install -r requirements.txt
2。好的老办法

将conda环境导出到pip需求文件中,如下所示:

然后转到Docker文件并添加以下行:

RUN conda env update -n base --file myenv.yml
RUN python -m pip install -r requirements.txt

也许,因为我过去也曾面临过类似的问题。您可以删除生成版本和版本版本,但如果安装了不同版本,某些应用程序可能会有不同的工作方式。是否使用相同的操作系统生成environment.yml和Docker映像?其中一些库依赖于平台,如:libcxxabi和libcxx这些库适用于OSX,但在Linux中不可用。其中一些LIB只有在我将它们放在PIP部分时才起作用。我想创建一个跨平台的environment.yml,但我不知道如何…@gotch4我认为目前不存在跨平台兼容的conda环境文件,这是因为conda本身并不完全跨平台兼容。如果我错了,请纠正我,互联网。