作为二进制 tarball 的便携式 conda 环境

portable conda environment as a binary tarball

我正在尝试构建一个可移植的 conda 环境。 所以我们可以打包并稍后将其分发到另一台服务器或许多服务器。 我们搭建环境的地方和后面要部署的地方是两个不同的地方。 我注意到 conda createconda install 都将环境位置硬编码到 environment_path\bin 下所有已安装脚本的 shebang 中 - 有没有办法覆盖它?

我们必须使用部署位置,而不是在 shebang bin/ 脚本中为该环境构建位置。

还创建了https://github.com/conda/conda/issues/7861

免责声明:我知道使用导出的 yaml 文件重建环境的选项,但这不是我们在这里看到的。我们希望将 conda 环境作为二进制 tarball 可再分发/可移植 - 部署位置已知,但它与环境构建位置不同。

包保存在 <conda_root>/pkgs。您可以将这些文件(以及 anaconda 安装程序脚本)复制到您的部署服务器,安装 anaconda,然后 运行 conda install <path_to_pkgs>/*.bz2.

我刚刚发现 conda-pack 似乎直接解决了这个问题

https://github.com/conda/conda-pack

conda-pack is a command line tool for creating relocatable conda environments. This is useful for deploying code in a consistent environment, potentially in a location where python/conda isn't already installed.

文档:https://conda.github.io/conda-pack/

用例:

  • 将应用程序与其部署环境捆绑在一起
  • 打包 conda 环境以便在部署时与 Apache Spark 一起使用 纱线(有关更多信息,请参见此处)。
  • 打包用于在 Apache YARN 上部署的 conda 环境。一种方法是使用 Skein。
  • 归档处于正常运行状态的环境

更新:我们的其他一些 PySpark 应用程序在所有 Hadoop 节点(NFS 安装)上可用的位置上使用 conda 环境,并且运行良好对于一些没有大量依赖项的 conda 环境。