阻止软件包安装到 conda 基础环境

Block package installations to conda base environment

我目前正在使用 miniconda,我想防止我自己和我机器的其他用户在 base 环境中安装任何东西。这是因为我希望用户创建虚拟环境并在那里安装东西。我也不希望我的基础环境变得臃肿。

有办法吗?我同时使用 conda 和 pip,所以我想我需要以某种方式阻止它们。

一个选项是将目录 pip 和 conda 安装包的写入权限更改为用于基本环境。这些位置因您的分布而异,但您可以使用 python -c "import setuptools; print(setuptools.__file__)" 之类的内容进行检查。 setuputils 的父目录将是默认安装包的位置。 运行 chmod -w <packages dir> 删除写权限。您以后可以随时使用 chmod +w <packages dir> 将它们添加回来,但是当它们被禁用时,这应该可以防止您意外地在那里安装软件包。除非你随意安装带有 sudo 的软件包,即...

您可以将此添加到您的 .bashrc.zshrc

function pip(){
  if [ "${CONDA_PROMPT_MODIFIER-}" = "(base) " ] && [ "" = "install" ]; then
    echo "Not allowed in base"
  else
    command pip "$@"
  fi
}

function extended_conda(){
  if [ "${CONDA_PROMPT_MODIFIER-}" = "(base) " ] && [ "" = "install" ]; then
    echo "Not allowed in base"
  else
    conda "$@"
  fi
}
alias conda=extended_conda

如果你在基础环境中,它会拒绝安装命令。