Terminal &引用~/miniconda3/bin“;不在自定义环境的路径前加前缀

Terminal &引用~/miniconda3/bin“;不在自定义环境的路径前加前缀,terminal,conda,Terminal,Conda,我在~/.condarc中使用conda 4.7.11和auto\u activate\u base:false。我使用conda install-c conda forge htop安装了htop。它安装在~/miniconda3/bin/htop。当我在base环境中时,我能够使用htop,因为~/miniconda3/bin在路径变量前面加了前缀。但是当我在所有环境之外时,只有~/miniconda3/condabin被前置到路径。当我在除base以外的所有其他环境中时,则~/minico

我在
~/.condarc
中使用conda 4.7.11和
auto\u activate\u base:false
。我使用
conda install-c conda forge htop
安装了
htop
。它安装在
~/miniconda3/bin/htop
。当我在
base
环境中时,我能够使用
htop
,因为
~/miniconda3/bin
路径
变量前面加了前缀。但是当我在所有环境之外时,只有
~/miniconda3/condabin
被前置到
路径
。当我在除
base
以外的所有其他环境中时,则
~/miniconda3/envs/CUSTOM_ENV/bin
~/miniconda3/condabin
前面都有
路径
的前缀,而不是
~/miniconda3/bin
,这就是为什么我只能在
base
环境中使用
htop
。因此,我的问题是如何在所有环境中使用
htop
安装的
conda
,包括禁用所有环境时的情况


请不要建议在我的情况下(CentOS)使用包管理器,如
apt
yum
,因为我没有根权限使用此包管理器。提前感谢。

康达环境不是嵌套的,因此基础中的内容不会被其他环境继承。隔离环境是必不可少的要求,因此,baseenv中的内容在未激活时不可访问应该是合理的

备选案文1:环境堆叠 但是,有一个选项可以显式地堆叠环境,这在这里字面上意味着您所要求的,即,将前一个环境的
bin/
保留在
PATH
变量中。因此,如果您只在base中安装了
htop
,那么您可以在其他环境中保留对它的访问权限,如

conda activate base
conda activate --stack my_env
如果您决定走这条路,我认为谨慎的做法是尽量减少在base中安装的内容。当然,您也可以创建一个非baseenv来堆叠,但是如果总是要激活这个env可能会很麻烦,而在默认安装中,base会自动激活

从Conda v4.8开始,将有一个
自动堆栈
配置选项:

conda config --set auto_stack true
有关详细信息,请参阅

选项2:默认安装 如果您希望在每个环境中安装
htop
,而不是在Conda envs之外,那么最简单的解决方案是在每个环境中安装它,并且位于Conda config中的键
create\u default\u packages
下。运行以下命令将告诉Conda在创建新环境时始终安装
htop

conda config --add create_default_packages htop
不幸的是,这不会更新任何现有的环境,所以您仍然必须返回并执行该操作(例如)。还有一个
--无默认包
标志,用于在创建新环境时忽略默认包

选项3:全局安装 一句警告的话 以下两个选项不是官方建议,因此请注意emptor,如果您确实使用过它们,请务必在将来报告问题/故障排除时报告对
$PATH
的非标准操作

连接 另一个选项(尽管更为手动)是在用户目录(例如,
~/.local/bin
)中创建一个文件夹,将其添加到
.bashrc
中的
$PATH
,并在其中创建指向要全局“导出”的二进制文件的链接。我使用了一些我想独立于Conda使用的程序(例如,
emacs
),即使它们是由Conda安装和管理的

专用环境
如果您计划使用一组软件来实现这一点,那么可以将一个env专用于此类全局软件,只需将其整个
/bin
目录添加到
$PATH
。不要使用base执行此操作-自Conda v4.4以来,Conda希望严格管理它自己。此外,不要对任何与Python相关的东西这样做:严格遵守本机(编译)软件(例如,
htop
就是一个很好的例子)。如果相同版本的附加Python出现在
$PATH
上,则可能会造成库加载混乱。我从未尝试过这样做,我更喜欢手动链接,因为我确切地知道我要导出的内容。

我认为默认安装对我来说是可以的,谢谢@thmw仅供参考,我已经更新了答案,以涵盖堆叠环境的选项,这对于您的情况可能是更好的解决方案,因为它将避免在每个环境中重新安装。