【问题标题】:How to transfer Anaconda env installed on one machine to another? [Both with Ubuntu installed]如何将安装在一台机器上的 Anaconda env 转移到另一台机器上? [都安装了 Ubuntu]
【发布时间】:2018-02-02 12:17:22
【问题描述】:

我一直在我的 GuestOS ubuntu 14.04 上使用 Anaconda(4.3.23),它安装在 HostOS windows 8.1 上的 Vmware 上。我已经在 anaconda 中设置了一个环境并安装了许多库,其中一些安装起来非常忙碌(不是直接的 pip 安装)。很少有库具有内部依赖关系,并且必须从它们的 git 源一起构建。

问题 我将使用基于云的 VM(Azure GPU 实例)来使用 GPU。但我不想再次进入繁忙的安装过程,因为我不想在重新安装所有软件包和库所花费的时间上浪费金钱

有什么方法可以将我现有的环境(已经安装了所有东西)传输/复制到云虚拟机?

【问题讨论】:

  • 你应该可以做conda list --export > requirements.txt,然后在你的新环境上做conda create --name [env name] --file requirements.txt
  • 只有当软件包和库已经下架并从 pip 安装时才有效?通过您的方法,我将获得软件包的名称列表。并且在新环境中,这些软件包将再次从 pip 安装。但问题是我有自定义构建的包,它们相互依赖配置

标签: python ubuntu anaconda virtualenv conda


【解决方案1】:

根据 github 线程在你的源机器上执行以下命令: https://github.com/conda/conda/issues/3847

source activate yourEnvironment
conda env export --no-builds > environment.yml

在目标机器上执行:

conda env create -f environment.yml

conda env export 生成的文件看起来有点不同,但它也包含 pip 包:

名称:您的环境 渠道:

  • conda-forge
  • 默认值 依赖关系:
  • absl-py=0.5.0 ...
  • 点:
    • 小行星==2.0.4 ...

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:
## You can try below approach to move all the package from one machine to other :
## Note : Machine that packages are being moved should be same and python version also should be same



$ pip install conda-pack



# To package an environment:

## Pack environment my_env into my_env.tar.gz

$ conda pack -n my_env

## Pack environment my_env into out_name.tar.gz

$ conda pack -n my_env -o out_name.tar.gz


## Pack environment located at an explicit path into my_env.tar.gz

$ conda pack -p /explicit/path/to/my_env


# After following above approach, you will end up with a tar.gz file. Now to install package from this zip file follow below approach.

## To install the environment:

## Unpack environment into directory `my_env`

$ mkdir -p my_env
$ tar -xzf my_env.tar.gz -C my_env


## Use Python without activating or fixing the prefixes. Most Python
## libraries will work fine, but things that require prefix cleanups
## will fail.

$ ./my_env/bin/python


## Activate the environment. This adds `my_env/bin` to your path

$ source my_env/bin/activate


## Run Python from in the environment

(my_env) $ python


## Cleanup prefixes from in the active environment.
## Note that this command can also be run without activating the environment
## as long as some version of Python is already installed on the machine.

(my_env) $ conda-unpack

【讨论】:

    【解决方案3】:

    您可以将整个 Anaconda 安装复制到您的云实例中。

    【讨论】:

    • 对于为特定内核编译的库不会有问题吗?没关系,两者都使用 Ubuntu,所以应该没问题。这可能是你最好的选择,@Qaisar Rajput
    • 正确的方法应该是通过yml文件导出环境。
    【解决方案4】:

    如果conda list --export 像这样失败......

    执行conda list --export > package-list.txt 会创建一个如下所示的文件:

    # This file may be used to create an environment using:
    # $ conda create --name <env> --file <this file>
    # platform: win-64
    _tflow_1100_select=0.0.1=gpu
    absl-py=0.5.0=py_0
    astor=0.7.1=py_0
    ...
    

    但是通过执行conda create -n myenv --file package-list.txt 创建一个新环境给我这个错误:

    Solving environment: ...working... failed
    
    PackagesNotFoundError: The following packages are not available from current channels:
    
      - markdown==2.6.11=py_0
      ...
    

    ...然后尝试使用conda env export

    根据this discussion在你的源机器上执行以下命令:

    source activate yourEnvironment
    conda env export --no-builds > file.txt
    

    在目标机器上执行:

    conda env create --file /path/to/file.txt
    

    conda env export 生成的文件看起来有点不同,但它也包含 pip 包

    name: yourEnvironment
    channels:
      - conda-forge
      - defaults
    dependencies:
      - absl-py=0.5.0
      ...
      - pip:
        - astroid==2.0.4
        ...
    

    【讨论】:

    • 感谢您的详细回答,但我认为它不会解决问题。仅当软件包和库现成可用并且可以从 pip 安装时,这不是有效吗?通过您的方法,我将获得软件包的名称/版本列表。并且在新环境中,这些软件包将再次从 pip 安装。但问题是,我有自定义构建的包,它们具有相互依赖的配置
    【解决方案5】:

    this documentation page的最后:

    保存包以备将来使用:

    conda list --export > package-list.txt
    

    从导出文件重新安装包:

    conda create -n myenv --file package-list.txt
    

    【讨论】:

    • 只有当软件包和库已经下架并从 pip 安装时才有效?通过您的方法,我将获得软件包的名称列表。在新环境中,这些包将再次从 pip 安装。但问题是,我有自定义构建的包,它们具有相互依赖的配置
    • 要重新安装,就是“conda env create -n myenv --file package-list.txt”。顺便说一句,链接坏了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多