【问题标题】:How can I install a conda environment when offline?离线时如何安装 conda 环境?
【发布时间】:2015-10-22 03:53:56
【问题描述】:

我想在没有网络连接的机器上创建一个 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 基于此目录中的包创建环境?

【问题讨论】:

  • “conda 存档”是什么意思?您在命令提示符中使用什么参数以及参考什么?

标签: python anaconda conda


【解决方案1】:

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

您会注意到,尽管 spyder 和 jupyter 之类的软件不再工作(可能是因为路径不同)。我对此的解决方案是将离线机器中的基础环境克隆到一个新环境中,我将其称为 ENV2。然后你需要做的就是将ENV2的内容复制到ENV1的内容中并替换文件。

这应该会覆盖与 spyder、jupyter.. 相关的文件,并保持您导入的包完好无损。

【讨论】:

    【解决方案2】:

    这里的很多答案都不是 100% 与“离线时”部分相关的。他们谈论OP的其余问题,而不是反映在问题标题中。

    如果您来到这里是因为您需要在现有 Anaconda 安装之上创建离线环境,您可以尝试:

    conda create --offline --name $NAME
    

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

    【讨论】:

      【解决方案3】:

      简答:从另一台机器复制整个环境,使用相同的操作系统。

      为什么

      依赖关系。一个包依赖于其他包。当您在线安装包时,包管理器conda 会分析包依赖关系并为您安装所有需要的包。

      anaconda 中的依赖性特别大。因为anaconda 是一个元包,它依赖于另外 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 目录”键的第一个值是位置。去那里并将名为“myvenv”的整个子文件夹(上一步中的环境名称)打包到一个存档中。

      3. 将存档复制到您的离线计算机。检查来自conda info 的“envs 目录”。并将存档中的环境解压到离线机器上的env目录中。

      4. 完成。

      【讨论】:

      • conda create -n myvenv --copy anaconda 中的“anaconda”代表什么?
      • 对于“--copy anaconda”。 “anaconda”这个词是无效的。我改为“conda create -n myvenv --copy”。
      【解决方案4】:

      我不确定这是否与其他答案相矛盾或相同,但我按照conda documentation 中的说明在本地文件系统上设置了一个通道。

      然后,只需将新的包文件移动到本地目录,在通道子文件夹(其名称应类似于 linux-64)上运行 conda index 即可。

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

      希望对您有所帮助。

      【讨论】:

        【解决方案5】:

        这就是在 Linux 中对我有用的方法 -

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

        (b) 激活新的 env - source activate

        (c) 在具有 Internet 连接的计算机上从 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)。所有相关的包都可以用同样的方式安装。

        【讨论】:

          【解决方案6】:

          你试过不带 --offline 吗?

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

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

          【讨论】:

          • PATHTO\Anaconda_py3 引用的文件/目录是什么?我在 2017 年 9 月 25 日使用~AppData\Local\Continuum\Anaconda3\python.exe 尝试了此操作,但得到以下结果:“警告:远程服务器找不到请求频道的 noarch 目录,其 url:file:///C:/Users/593260/AppData/ Local/Continuum/Anaconda3/python 您可能给 conda 一个无效的频道。请使用 conda config --show 仔细检查您的 conda 配置。"
          • 请注意,上述命令将完全失败,与--channel 标志或缺乏互联网分开,因为它会尝试将环境分配给名称python=3.4。正确的环境名称应遵循-n 标志。我尝试编辑答案,但审阅者放弃了我的编辑。
          【解决方案7】:

          除了复制pkgs文件夹外,还需要索引它,让conda知道如何找到依赖。有关更多详细信息,请参阅 this ticket,有关索引 pkgs 文件夹的示例,请参阅 this script

          按照@asmeurer 的建议使用--unknown 仅在您尝试安装的软件包没有依赖项时才有效,否则您将收到“找不到某些依赖项”错误。

          克隆是另一种选择,但这会给你所有根包,这可能不是你想要的。

          【讨论】:

            【解决方案8】:

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

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

            【讨论】:

            • 这里的“部署 tar.biz.”是什么意思?我正面临 conda 下载缓慢的问题,即 conda 安装会超时。我在中国,在互联网流量的邪恶审查背后。虽然审查适用于所有下载,但我发现通过 conda 下载比其他下载慢得多,比如 ftp 或 http 下载。
            • 我的意思是在 /home/user/anaconda3/pkgs 上打开一个 Nautilus 窗口,右键单击 tar.bz2,然后选择“在此处提取”。
            【解决方案9】:

            您可以尝试克隆作为基础环境的根目录。

            conda create -n yourenvname --clone root

            【讨论】:

            • 自 2017 年 9 月 25 日起,这不再有效。我断开了网络连接,然后运行 ​​conda create -n offline --clone root(也尝试了现有环境)并收到错误:CondaError: CondaHTTPError: HTTP None None for url <https://repo.continuum.io/pkgs/free/win-64/jpeg-9b-vc14_0.tar.bz2> Elapsed: None An HTTP error occurred when trying to retrieve this URL. HTTP errors are often intermittent, and a simple retry will get you on your way. CondaError: CondaHTTPError: HTTP None None for url <https://repo.continuum.io/pkgs/free/win-64/jpeg-9b-vc14_0.tar.bz2> Elapsed: None...
            • Steven,您找到可行的替代解决方案了吗?
            • Steven C. Howell,它对你不起作用,因为你添加了离线标志,它不是命令的一部分,在 2019 年与 conda 版本 4.7.11 一起工作
            • @jacobay43 如果我没看错他的命令,那实际上只是新环境的名称,所以它一定是一个不同的问题
            【解决方案10】:

            pkgs 目录不是频道。您要查找的标志是 --unknown,这会导致 conda 将文件包含在 pkgs 目录中,即使它们在其中一个通道中找不到也是如此。

            【讨论】:

            • 更明确地说:conda create --unknown --offline -n​​ python3 python=3
            • 截至 2017 年 9 月 25 日,这似乎有效,然后失败并显示以下内容:“CondaError: RuntimeError('EnforceUnusedAdapter called with url repo.continuum.io/pkgs/free/win-64/…\n此命令在离线模式下使用远程连接。 \n',)..."(重复 3 次)
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多