首页 > 解决方案 > Conda config 显示的项目比配置的多

问题描述

conda config --show-sources显示只有一个配置文件,即/home/gqqnbig/.condarc. 此文件设置envs_dirs为 2 个位置。

$ conda config --show-sources --debug
DEBUG conda.gateways.logging:set_verbosity(231): verbosity set to 2
==> /home/gqqnbig/.condarc <==
envs_dirs:
  - ~/shared/.conda/envs
  - /opt/anaconda3/envs
pkgs_dirs:
  - /opt/anaconda3/pkgs
  - ~/shared/.conda/pkgs

==> cmd_line <==
debug: True

不过,conda config --show表示计算值envs_dirs有 3 个位置。

$ conda config --show envs_dirs --debug
DEBUG conda.gateways.logging:set_verbosity(231): verbosity set to 2
DEBUG conda.base.context:root_writable(498): [Errno 13] Permission denied: '/opt/anaconda3/conda-meta/history'
envs_dirs:
  - /home/gqqnbig/shared/.conda/envs
  - /opt/anaconda3/envs
  - /home/gqqnbig/.conda/envs

第三个位置如何填充?如何防止 conda 使用/home/gqqnbig/.conda/envs

标签: ubuntuconda

解决方案


Conda 默认环境目录

$CONDA_ROOT_PREFIX/envs~/.conda/envs目录都被烘焙到 Conda 代码中,并且将始终附加.condarc(您的第一个命令显示的内容)中的列表以生成最终计算的context.envs_dirs(您的第二个命令显示的内容)。只有在所有更高的先例位置都不可写时,Conda 才会使用它。

我不知道这部分代码的历史,但我怀疑这个默认文件夹主要是作为共享系统上的用户的后备,其中 Conda 实例(因此$CONDA_ROOT_PREFIX/envs)位于不可写的位置。也就是说,在这两个目录中烘焙,试图确保在单用户和共享用户安装场景中至少存在一个可写环境文件夹。

强制只读

我不完全确定,但看起来 Conda 并不依赖此文件夹用于任何其他目的。因此,如果您真的想确保 Conda 永远不会使用它,您可以简单地将目录设置为只读:

chmod -w ~/.conda/envs

为了安全起见,您可以尝试设置它,然后测试创建一个显示详细程度的环境以检查问题。


推荐阅读