首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发现Conda管理的包在包缓存中没有条目

发现Conda管理的包在包缓存中没有条目
EN

Stack Overflow用户
提问于 2020-12-02 10:11:50
回答 1查看 207关注 0票数 1

在尝试使用conda-pack时

代码语言:javascript
复制
conda pack -n myenv

显示了以下消息

代码语言:javascript
复制
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 ),但这些包不在包缓存中?

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

EN

回答 1

Stack Overflow用户

发布于 2020-12-02 22:52:43

Conda包缓存

Conda为所有包提供了一个两步安装过程:

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

希望这能澄清包缓存及其用途。

可能的原因

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

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

建议的解决方法

在任何一种情况下,我都会尝试导出到YAML,

代码语言:javascript
复制
conda env export > env.yaml

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

代码语言:javascript
复制
conda env create -f env.yaml -n new_env

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65101248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档