如何在多个conda环境中安装同一个软件包?
批量为多个conda环境安装同一软件包
嘿,这个需求完全可以用1-2条命令搞定,不用挨个环境手动操作~下面给你两种实用方案,不管是用conda还是pip安装都能实现:
方案1:通过conda批量安装
你可以结合shell命令的管道和循环,直接遍历所有conda环境并执行安装。比如要给所有环境安装numpy,在bash或zsh里运行这一行就行:
conda env list | grep -v '^#' | awk '{print $1}' | xargs -I {} conda install -n {} numpy -y
拆解一下这个命令的作用:
conda env list:列出所有已创建的conda环境grep -v '^#':过滤掉输出里的注释行(就是开头带#的那些)awk '{print $1}':提取每一行的环境名称(输出里的第一列)xargs -I {}:把每个环境名替换到后续命令的{}位置conda install -n {} numpy -y:给指定环境安装numpy,-y参数会自动确认所有安装提示,不用手动回车
要是不想给base环境安装,加个过滤就行:
conda env list | grep -v '^#' | grep -v '^base' | awk '{print $1}' | xargs -I {} conda install -n {} numpy -y
方案2:通过pip批量安装
如果这个包用pip安装更合适,也可以用类似思路,不过要注意用conda run来确保调用对应环境的pip(避免用错全局pip):
conda env list | grep -v '^#' | awk '{print $1}' | xargs -I {} conda run -n {} pip install numpy
同样,要排除base环境的话,加上grep -v '^base'就行。
进阶小技巧:写个shell函数简化操作
要是你经常需要做这种批量安装,可以把逻辑写成一个shell函数,放到你的.bashrc或者.zshrc里:
conda-batch-install() { # 第一个参数是要安装的包名 local PACKAGE="$1" conda env list | grep -v '^#' | grep -v '^base' | awk '{print $1}' | xargs -I {} conda install -n {} "$PACKAGE" -y }
之后用的时候只要输入conda-batch-install numpy,就能给除base外的所有环境装numpy了,超方便~
如果有个别环境不需要安装,还可以临时加过滤,比如不想给explore_cora环境装,就把命令里的grep -v '^base'改成grep -v '^base' | grep -v 'explore_cora'就行。
内容的提问来源于stack exchange,提问作者lhoupert




