我想在离线机器上的.yaml文件中创建一个Conda环境(即无法访问Internet)。在在线机器上,这非常好用:
conda env create -f environment.yaml
但是,它不能在离线机器上工作,因为找不到包。我该怎么做?
如果不可能,还有另一种简单的方法可以将我的完整Conda环境变为离线计算机(包括Conda和pip安装包)吗?
逐个浏览软件包以从.tar.bz2文件中安装它们,但它非常麻烦,所以我想避免这种情况。
答案 0 :(得分:1)
如果你可以使用pip来安装软件包,你应该看一下devpi
,特别是它的服务器。 devpi
可以缓存通常从PyPI安装的软件包,因此只有在首次安装时它才会实际检索它们。您必须配置pip
以从devpi服务器检索包。
由于您不想手动列出所有软件包及其依赖项,您应该在连接到互联网的计算机上:
.tar.bz2
和.whl
文件(您可以对整个文件进行tar操作)在未连接的机器上:
devpi upload
)上传到devpi服务器pip
,它将找到本地服务器上的所有软件包。 devpi
有一个小的学习曲线,由于加速和安装私有包(即没有上传到PyPI)作为普通依赖项的能力,已经值得遍历,只需生成包并上传它到你当地的devpi服务器。
答案 1 :(得分:0)
我想上面的Anthon的解决方案非常好,但万一有人对一个对我有用的简单解决方案感兴趣:
我首先使用conda env export>创建了一个指定环境的.yaml文件。 file.yaml。按照http://support.esri.com/en/technical-article/000014951上的说明,我自动下载了conda安装包的所有必要安装文件,并从文件中创建了一个通道。为此,我只是调整了上面链接中的代码来处理我的.yaml文件而不是他们使用的conda列表文件。此外,我通过循环遍历.yaml文件中的pip条目并使用pip download下载每个软件包,自动下载pip安装软件包所需的文件。此外,我自动从.yaml文件创建了单独的conda和pip需求列表。然后我使用带有脱机标志的conda create,带有conda要求的文件和我的自定义通道创建了环境。最后,我使用pip install和pip requirements文件以及包含pip安装文件的文件夹安装了pip要求--find-links。
这对我有用。唯一的问题是,如果您需要指定与正在运行的操作系统不同的操作系统,则只能下载带有pip下载的二进制文件,对于某些软件包,没有可用的二进制文件。这对我来说没问题,因为目标机器具有一些特性但未来可能会出现问题,因此我打算研究Anthon建议的解决方案。