我想在没有网络连接的机器上创建一个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基于此目录中的包创建环境?
答案 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多个包。
元软件包,是不包含实际软件的软件包,仅取决于要安装的其他软件包。
一个个下载所有这些依赖项并将它们安装在离线计算机上是完全荒谬的。
在另一台具有相同操作系统的计算机上安装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
用于
使用副本而不是硬拷贝或硬拷贝来安装所有软件包 软链接。
查找环境的存储位置
conda info
键“ envs directory”的第一个值是位置。转到此处,将名为“ myvenv”(上一步中的env名称)的整个子文件夹打包到一个档案中。
将存档复制到您的脱机计算机。检查conda info
中的“ envs目录”。然后将存档中的环境提取到脱机计算机上的env目录中。
完成。
答案 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)
我发现最简单的方法如下:
答案 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 .