我已经为正在使用的python程序更新了anaconda软件包。现在,我想在脱机的计算机上安装这些新软件包。
我已使用以下命令生成了已安装软件包的列表:
>conda list -e > packagelist.txt
我希望能够使用以下方式更新脱机计算机上的软件包:
>conda install --file (location of 'packagelist') --channel file://(location of the folder where the packages are located)
所以我的问题是:如何轻松地创建一个文件夹“ pkgs”,其中包含我的软件包列表中指示的所有软件包文件?
我可以只使用当前的Anaconda安装位置中的整个“ pkgs”文件夹吗?还是不是我的软件包列表中的软件包不一定安装在其中?
如果问题是“ nooby”,我深表歉意,老实说,我不知道该怎么办。期待任何帮助。
答案 0 :(得分:7)
如果其他人为此感到挣扎,这些是我采取的步骤:
创建一个文件,其中包含当前环境中安装的所有软件包的名称。一种方法(已经显示了问题)是在命令提示符下(以admin身份运行)输入以下内容:
conda list -e > packagelist.txt
转到Anaconda安装目录中的“ pkgs”文件夹。复制所有 zipped 软件包(仅 扩展名为“ .tar.bz2”的软件包),然后将其粘贴到另一个文件夹中,将其命名为“ pkgs2 “。
将创建的“ packagelist”文本文件中的软件包与创建的新文件夹“ pkgs2”中的软件包进行比较。删除较旧的软件包版本。例如,“ pkgs2”文件夹中可能有两个不同的numpy版本。如有必要,请删除过时的。
创建 index 和 repodata 文件。我不确定为什么。重要的是“ repodata.json.bz2”文件。您可以通过在命令提示符下键入以下命令来创建它(显然,“ pkgs2”可能位于其他位置,因此请进行相应调整):
conda index C:\Users\myName\Desktop\pkgs2
如果出现以下错误:
Indexing a copy of the Anaconda conda package channel is neither
necessary nor supported. If you which to add your own packages,
you can do so by adding them to a separate channel.
然后,您必须转到“ pkgs2”文件夹并删除“ _license”软件包。我不知道它为什么起作用,但是它可以(从Google搜索中看到了错误的解决方案)。
索引建立完成后,您应该看到3个新文件已添加到“ pkgs2”文件夹中。它们被称为“ .index.json”,“ repodata.json”和“ repodata.json.bz2”。
您现在可以将“ pkgs2”文件夹和“ packagelist.txt”传输到另一台计算机。如果计算机尚未安装,则还可以包括用于安装anaconda的安装文件。要脱机安装新的/更新的软件包,请在已安装anaconda的脱机计算机上的命令提示符下输入以下内容(再次,相应地,明显地调整文件名和位置):
conda install --file C:\Users\myName\Desktop\OfflineInstall\packagelist.txt --channel file://C:\Users\myName\Desktop\OfflineInstall\pkgs2
但是,您可能会在第5步中遇到以下问题(这只是一个示例):
UnsatisfiableError: The following specifications were found to be in conflict:
- matplotlib 1.4.3 np19py27_1 -> pyparsing 2.0.3
- pyparsing 2.2.0 py27_0
Use "conda info <package>" to see the dependencies for each package.
相应地调整软件包,删除不需要的软件包或更新显示的软件包。从第4步开始重复,最后应该没问题。
希望这对某人有帮助!