【问题标题】:Where does Conda save the compiled libraries associated with Conda environments?Conda 在哪里保存与 Conda 环境相关的编译库?
【发布时间】:2015-12-19 07:51:53
【问题描述】:

我编写了一个 Apache Spark python 脚本,出于兼容性原因,当我将 Spark 作业提交到集群时,我需要传递特定版本的 scikit-learn。问题是我不确定在哪里可以获得我需要的 scikit-learn 二进制/可执行文件的副本。我不认为它像下载 scikit-learn 源并自己编译那样简单,因为我听说 scikit-learn 有很多依赖项,而且我不确定我需要哪些依赖项来满足我需要的版本。我在想我可以使用我需要的特定 scikit-learn 版本创建一个 Conda 环境,以便 Conda 可以为我完成所有编译,但我不确定 Conda 将它构建的库保存在哪里。我尝试在默认的 venv 文件夹下进行检查,但没有看到任何有希望的东西。

【问题讨论】:

    标签: python anaconda conda


    【解决方案1】:

    Conda 负责处理依赖项。只需将版本传递给 Conda:

    $ conda install scikit-learn=0.16.1
    

    如果您想要每个包的确切版本,您可以执行以下操作:

    $ conda list -e > requirements.txt
    

    然后你创建一个新的环境如下:

    $ conda create -n my_environment --file requirements.txt
    

    【讨论】:

    • 我可以毫无问题地在 Conda 中安装我的依赖项的正确版本,问题是我不确定与这些依赖项对应的文件存储在哪里。我希望从 Conda 中提取依赖文件,以便我可以在完全不同的地方使用它们(例如,在我无法直接访问我的 Conda 环境的 Hadoop 集群上)。我想将 Conda 依赖文件与我的一项 Hadoop 作业一起提供
    • 无论如何,我不确定您是否真的能够可靠地将 conda 安装的二进制文件移动到完全不同的系统。我自己不了解细节,但这可能会有所帮助:conda.pydata.org/docs/building/…
    【解决方案2】:

    包在被解压之前存储在(prefix)/pkgs 文件夹中。提取的文件可以存在于前缀中的很多位置 - 只是包指定的任何位置。如有必要,您可以发送软件包 tarball,并直接从它们安装(将它们指定为参数conda install)。然而,按照 Alexander 在这里的建议做真的更好:创建一个固定版本的需求文件。您还应该考虑使用 conda-env。它在从 anaconda.org 获取软件包方面比从 conda 列表获取的普通需求文件提供了更大的灵活性。

    关于 conda-env 的文档:http://conda.pydata.org/docs/using/envs.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 2023-02-05
      • 2016-09-02
      • 2020-07-02
      相关资源
      最近更新 更多