如何在离线时安装conda环境?

时间:2015-07-30 16:54:06

标签: python anaconda conda

我想在没有网络连接的机器上创建一个conda环境。到目前为止我所做的是:

在连接到互联网的计算机上:

conda create -n python3 python=3.4 anaconda

Conda将所有相关软件包归档到\Anaconda\pkgs。我把它们放在一个单独的文件夹中,并将其移动到没有网络连接的机器上。该文件夹的路径为PATHTO\Anaconda_py3\win-64

我试过

conda create -n python=3.4 anaconda --offline --channel PATHTO\Anaconda_py3

这会显示错误消息

Fetching package metadata:
Error: No packages found in current win-64 channels matching: anaconda

You can search for this package on Binstar with

    binstar search -t conda anaconda

我做错了什么?如何告诉conda基于此目录中的包创建环境?

11 个答案:

答案 0 :(得分:10)

你可以尝试克隆root作为基础环。

conda create -n yourenvname --clone root

答案 1 :(得分:3)

除了复制pkgs文件夹之外,还需要对其进行索引,以便conda知道如何查找依赖项。有关详细信息,请参阅DateTime's;有关为pkgs文件夹编制索引的示例,请参阅this ticket

使用--unknown作为@asmeurer建议只有在您尝试安装的软件包没有依赖项时才会起作用,否则您将得到一个"无法找到某些依赖项"错误。

克隆是另一种选择,但是这将为您提供所有根包,这可能不是您想要的。

答案 2 :(得分:3)

此处的许多答案并非100%与“离线时”部分相关。他们谈论OP其余的问题,未反映在问题标题中。

如果您是因为需要在现有的Anaconda安装之上进行脱机环境创建而来到这里的,请尝试:

conda create --offline --name $NAME

您可以找到记录在here中的--offline标志

答案 3 :(得分:2)

你是否尝试过没有--offline?

conda create -n anaconda python=3.4 --channel PATHTO\Anaconda_py3

如果我没有连接到互联网,如果我已经在机器上但已经在另一个位置使用了anaconda,这对我有用。如果在运行此命令时连接到Internet,则可能会在Binstar上找不到与之相关的错误。

答案 4 :(得分:2)

简短的回答:从具有相同操作系统的另一台计算机上复制整个环境

为什么

依赖性。一个软件包取决于其他软件包。在线安装软件包时,软件包管理器conda会分析软件包的依存关系并为您安装所有必需的软件包。

anaconda中,依赖性特别重。原因anaconda是一个meta包,它依赖于另外160多个包。

  

元软件包,是不包含实际软件的软件包,仅取决于要安装的其他软件包。

一个个下载所有这些依赖项并将它们安装在离线计算机上是完全荒谬的。

详细解决方案

  1. 在另一台具有相同操作系统的计算机上安装conda。在隔离的虚拟环境中安装所需的软件包。

    # create a env named "myvenv", name it whatever you want
    # and install the package into this env
    conda create -n myvenv --copy anaconda
    

    --copy用于

      

    使用副本而不是硬拷贝或硬拷贝来安装所有软件包                       软链接。

  2. 查找环境的存储位置

    conda info
    

    键“ envs directory”的第一个值是位置。转到此处,将名为“ myvenv”(上一步中的env名称)的整个子文件夹打包到一个档案中。

  3. 将存档复制到您的脱机计算机。检查conda info中的“ envs目录”。然后将存档中的环境提取到脱机计算机上的env目录中。

  4. 完成。

答案 5 :(得分:1)

The pkgs directory is not a channel. The flag you are looking for is --unknown, which causes conda to include files in the pkgs directory even if they aren't found in one of the channels.

答案 6 :(得分:1)

这是在Linux中对我有用的东西 -

(a)创建一个空白环境 - 只需在$ CONDA_HOME / envs下创建一个空目录。验证 - conda info --envs。

(b)激活新的env - source activate

(c)在具有互联网连接的计算机上从https://anaconda.org/anaconda/repo下载相应的包(* .bz2)并将其移至隔离的主机。

(d)使用本地包安装 - conda install。例如 - conda install python-3.6.4-hc3d631a_1.tar.bz2,其中python-3.6.4-hc3d631a_1.tar.bz2存在于当前目录中。

那就是它。您可以通过常规方式验证(python -V,conda list -n)。所有相关的包都可以以相同的方式安装。

答案 7 :(得分:1)

我不确定这是否与其他答案相抵触或相同,但是我遵循了conda documentation中的说明,并在本地文件系统上设置了频道。

然后,将新包文件移动到本地目录,在通道子文件夹(其名称应类似于linux-64上运行conda index上,这很简单。

我还按照here所述将Anaconda配置设置offline设置为True,但不确定这是否必要。

希望有帮助。

答案 8 :(得分:0)

我发现最简单的方法如下:

  1. 在没有特殊开关的情况下运行'conda create --name name package '
  2. 复制尝试下载的第一个包的URL(未成功)
  3. 使用已连接计算机上的URL获取tar.bz2
  4. 将tar.bz2复制到离线机器的/ home / 用户 / anaconda3 / pkgs
  5. 将tar.bz2部署到位
  6. 删除现在不需要的tar.bz2
  7. 重复直到'conda create'命令成功

答案 9 :(得分:0)

这是一个可能有帮助的解决方案。它不是很漂亮,但是可以完成工作。因此,我想您有一台装有conda环境的机器,其中已安装了所需的所有软件包。我将其称为 ENV1 。您将必须转到该环境目录并找到它。通常可以在\Anaconda3\envs中找到。我建议压缩文件夹,但是您可以按原样使用它。将所需的环境文件夹复制到anaconda环境的脱机计算机的目录中。第一步应该使您的新环境响应诸如conda activate之类的命令。

您会注意到,尽管像spyder和jupyter之类的软件不再起作用(可能是由于路径差异)。我对此的解决方案是将脱机计算机中的基本环境克隆到一个新环境中,该环境我称为 ENV2 。然后,您需要将 ENV2 的内容复制到 ENV1 的内容中,并替换文件。

这应该覆盖与spyder,jupyter ..相关的文件,并保持导入的包完整。

答案 10 :(得分:-2)

$ bash Anaconda2-4.1.1-Linux-x86_64.sh -b -p $HOME/anaconda
$ bash Anaconda3-4.1.1-Linux-x86_64.sh -b -p $HOME/anaconda/envs/py3k
$ rm -f $HOME/anaconda/envs/py3k/bin/conda*
$ rm -f $HOME/anaconda/envs/py3k/conda-meta/conda-*
$ cd $HOME/anaconda/envs/py3k/bin
$ ln -s ../../../bin/conda .
$ rm -f activate
$ rm -f deactivate
$ ln -s ../../../bin/activate .
$ ln -s ../../../bin/deactivate .