【问题标题】:Create archive for offline conda environment installation为离线 conda 环境安装创建存档
【发布时间】:2017-08-24 11:03:07
【问题描述】:

我目前正面临这个问题:我们开发了一个 Python 项目,目前使用完整的 Anaconda 发行版进行部署。

我们希望通过创建一个我们可以共享的自定义环境来使其更加个性化。我们选择使用 Conda 作为拟合工具。

我已经研究过如何使用 *.yml 文件在 Conda 中创建和导出环境,但是在安装时,这需要互联网连接才能下载包和文件。

还有另一种方法来创建 一个已经包含环境所需的所有文件的存档。 然后我们可以传递包含所有依赖项的存档文件。这将如何实现?

如果您能指出我正确的方向,那也将非常有帮助。

【问题讨论】:

  • 这可能是相关的:github.com/conda/constructor
  • 这似乎包括整个 conda 安装,我理解正确吗?那么,假设我想部署软件包的更新,那么我是否需要卸载所有内容并运行新的安装程序?无论如何谢谢!
  • 如果您在构造函数中包含 conda 包,您应该能够使用它来更新已安装实例中的所有包。

标签: python anaconda conda


【解决方案1】:

我没有尝试过constructor,但我看到了另外两个选项,即

conda 包

conda-pack 允许您打包已安装的环境。

对于已安装的环境运行 s.th。喜欢

conda pack \
  -n MyEnv \
  -o MyEnv.tbz2 \
  --format tbz2 \
  --compress-level 9 \
  --n-threads 4

您将获得一个.tbz2 文件(或您选择的任何存档/压缩文件)。将其复制到目标位置并运行

mkdir $envBaseDir/MyEnv    
# The directory name is the environment name.
cd $envBaseDir/MyEnv
tar -xf /path/to/MyEnv.tbz2
source bin/activate
conda unpack

这些步骤不需要网络访问(在我的网络关闭的情况下尝试过)。

两个最相关的caveats似乎是

  1. 使用conda unpack 创建的环境无法再次打包。所以保留原始存档。
  2. 您不能为非常旧的环境创建(新)存档,因为环境中的包的包缓存需要存在。

请注意,我没有从旧档案重新创建 (conda unpack) 环境的经验。档案实际上只包含安装在您的 envs/MyEnv 环境目录中的东西,因此可能存在 Conda 基础环境可能过于分散的情况。这可能会限制存档环境的再现性。因此,...

容器

您可以在容器中创建环境。这种解决方案有很多缺点

  • 使用容器(创建和运行容器)的陡峭学习曲线。您会在搜索引擎中找到大量使用 Conda 的 Dockerfile 教程和示例。
  • 如果想在多用户集群环境中运行容器,请与具有安全意识的管理员讨论
  • 相当大的容器

但根据您的需求,这些缺点可能会被非常好的和(很可能是长期的)可重复性所抵消。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多