如何跨平台共享conda环境

时间:2016-09-01 20:49:24

标签: python cross-platform conda

http://conda.pydata.org/docs/using/envs.html处的conda文档解释了如何与其他人共享环境。

然而,文档告诉我们这不是跨平台:

NOTE: These explicit spec files are not usually cross platform, and      
therefore have a comment at the top such as # platform: osx-64 showing the  
platform where they were created. This platform is the one where this spec
file is known to work. On other platforms, the packages specified might not
be available or dependencies might be missing for some of the key packages
already in the spec.

NOTE: Conda does not check architecture or dependencies when installing 
from an explicit specification file. To ensure the packages work correctly,
be sure that the file was created from a working environment and that it is 
used on the same architecture, operating system and platform, such as linux-
64 or osx-64.

是否有一种很好的方法可以在另一个平台(例如Windows)的一个平台(例如CentOS)中共享和重新创建conda环境?

4 个答案:

答案 0 :(得分:55)

答案

这个答案是假设你想确保这一点 您通常关心的相同版本的软件包 不同的平台,你不关心完全相同的版本 整个依赖关系树中的所有包。如果您正在尝试安装 完整依赖关系树中具有完全相同版本的所有包 由于一些conda包有不同的可能性很高 osx / win / linux的依赖项。例如,the recipe for otrobopt 将在win和osx / linux上安装不同的软件包,所以环境列表 会有所不同。

建议:手动创建environment.yaml文件并指定或固定 只关注你所依赖的依赖关系。让conda求解器完成剩下的工作。 可能值得注意的是conda-env(用于管理conda的工具) 环境)明确建议你“始终创建你的 环境。手工编写文件。“

然后你会做conda env create --file environment.yml

看一下自述文件 conda-env

它们可以非常简单:

name: basic_analysis
dependencies:
  - numpy
  - pandas

或者更复杂的地方你固定依赖关系并指定anaconda.org频道 安装自:

name: stats-web
channels:
  - javascript
dependencies:
  - python=3.4   # or 2.7 if you are feeling nostalgic
  - bokeh=0.9.2
  - numpy=1.9.*
  - nodejs=0.10.*
  - flask
  - pip:
    - Flask-Testing

在任何一种情况下,您都可以使用conda env create --file environment.yaml

创建环境

如果您有更复杂的用例或更多问题,请更新原始文件 问题,我会看看我是否可以帮助你。

答案 1 :(得分:12)

虽然可以手动创建environment.yml文件,但是可以使用conda env export --from-history标志来确保您的环境可以跨平台工作。

这将仅包括您明确要求的软件包,而不包括环境中的每个软件包。

例如,如果您创建环境并安装软件包conda install python=3.8 numpy,它将安装许多其他依赖项以及python和numpy。

如果您随后运行conda env export > environment.yml,则您的environment.yml文件将包含为您自动安装的所有其他依赖项conda。

另一方面,运行conda env export --from-history只会使用environment.ymlpython=3.8创建numpy,因此可以跨平台工作。

根据the docs改编的答案。

答案 2 :(得分:1)

conda-env导出应用于将整个环境导出到名为my_env.yml的文件。

检查仅在OS X上获取前缀而不是包括pip的完整依赖项的有效解决方案。

第1步:如果已激活,请从环境中停用。否则它将创建仅带前缀的yml文件。

第2步:运行以下命令进行导出 conda-env导出-n my_env> my_env.yml 它将将每个必需的依赖项,通道和pip安装导出到yml文件中,该文件可导入以与他人共享。

第3步:运行以下命令进行导入 conda-env创建-n my_env -f = my_env.yml 它将创建与共享计算机相同的确切环境。

答案 3 :(得分:1)

对于那些对维护单个环境文件(可以在Linux,macOS和Windows中使用)的解决方案感兴趣的人,请检查https://github.com/ESSS/conda-devenv上的conda-devenv工具。