【问题标题】:Conda-managed packages were found without entries in the package cache在包缓存中发现没有条目的 Conda 管理的包
【发布时间】:2020-12-02 02:11:49
【问题描述】:

在尝试使用 conda-pack 时

conda pack -n myenv

显示以下消息

Conda-managed packages were found without entries in the package cache.  This is usually due to 'conda clean -p' being unaware of symlinked or copied packages. ...

包缓存到底在哪里?是 ...\Anaconda\Lib\site-packages 中的包吗?

这是否意味着在我尝试打包的环境中找到了包(例如 ...\Anaconda\envs\myenv\Lib\site-packages),但这些包不在包缓存中?

我应该如何解决这个问题?

【问题讨论】:

    标签: python package conda


    【解决方案1】:

    Conda 包缓存

    Conda 对所有软件包都有两步安装过程:

    1. 下载并解压缩到包缓存中。 默认为Anaconda/pkgsminiconda3/pkgs,与任何特定环境无关。可以使用 pkgs_dirs 配置设置指定自定义位置。包缓存用作所有环境可以共享包的位置。分享是通过...
    2. 将包链接到环境位置。pkgs_dirsenvs_dirs 位于同一文件系统上时,Conda 将使用硬链接将特定包链接到正在安装的环境,从而最大限度地减少物理副本。当跨文件系统时,可以额外启用软链接(allow_softlinks 配置设置),以实现类似的最小复制,但是由于不跟踪软链接(inode 计数不增加)conda clean -p 将无法识别软链接引用的存在并且可能会删除软链接环境所依赖的包。

    希望这能阐明包缓存及其用途。

    可能的原因

    现在解决手头的问题。首先,它可能是提到的,即环境的位置与包缓存的位置不同,并且在某些时候你运行了conda clean -p。但是,只有在您不遵循默认安装行为时才会发生这种情况。

    另一种可能是您一直在使用pip 安装东西。这会导致软件包从 PyPI 或 GitHub 安装到 site-packages,但它们不是 Conda 软件包,因此 conda-pack 不知道如何处理它。

    建议的解决方法

    无论哪种情况,我都会尝试导出到 YAML,

    conda env export > env.yaml
    

    然后,如果有一部分 pip: 包,请尝试将它们全部替换为 Conda 版本(编辑 YAML)。如果没有pip 部分,那么它可能是conda clean -p 的东西。无论哪种方式,使用 YAML 重新创建您的环境

    conda env create -f env.yaml -n new_env
    

    这应该会强制重新下载缓存中丢失的包,并切换到非 PyPI 版本的包,假设您删除了所有 pip: 包。

    我希望conda-pack 能够在这个环境的重建版本上工作。

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      • 2017-06-28
      • 1970-01-01
      • 2018-03-13
      • 2017-06-13
      相关资源
      最近更新 更多