ubuntu - 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
?
解决方案
Conda 默认环境目录
$CONDA_ROOT_PREFIX/envs
和~/.conda/envs
目录都被烘焙到 Conda 代码中,并且将始终附加到.condarc
(您的第一个命令显示的内容)中的列表以生成最终计算的context.envs_dirs
(您的第二个命令显示的内容)。只有在所有更高的先例位置都不可写时,Conda 才会使用它。
我不知道这部分代码的历史,但我怀疑这个默认文件夹主要是作为共享系统上的用户的后备,其中 Conda 实例(因此$CONDA_ROOT_PREFIX/envs
)位于不可写的位置。也就是说,在这两个目录中烘焙,试图确保在单用户和共享用户安装场景中至少存在一个可写环境文件夹。
强制只读
我不完全确定,但看起来 Conda 并不依赖此文件夹用于任何其他目的。因此,如果您真的想确保 Conda 永远不会使用它,您可以简单地将目录设置为只读:
chmod -w ~/.conda/envs
为了安全起见,您可以尝试设置它,然后测试创建一个显示详细程度的环境以检查问题。
推荐阅读
- python - 你有没有遇到过 RuntimeError: await was not used with future?
- python - 如何在嵌套列表中找到数字的位置?
- python - 最pythonic的方式来计时一个循环
- jira - 如何查看分配给我和我的团队成员的 JIRA 票证
- c - 只读是什么意思?
- javascript - Graphql、GQL 和 InputTypes {"message":"未提供所需类型 \"type!\" 的变量 \"$variable\"。"}
- ios - 更改 AVPlayer 的音量时,AVPlayerItemDidPlayToEndTime 通知不起作用
- r - 使用 install_github 时找不到 g++
- javascript - 用 React.createElement() 替换 document.createElement()
- gradle - 共享 gradle 依赖:版本目录 vs 插件