从`conda list`输出安装所有内容 [英] Install everything from a `conda list` output
本文介绍了从`conda list`输出安装所有内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个文件,conda_env.txt,它是保存conda list
的标准输出的结果。它具有以下结构。
conda_env.txt
# packages in environment at /scratch/hello/anaconda3:
#
# Name Version Build Channel
_ipyw_jlab_nb_ext_conf 0.1.0 py37_0
absl-py 0.7.1 pypi_0 pypi
alabaster 0.7.12 py37_0
anaconda-client 1.7.2 py37_0
anaconda-navigator 1.9.7 py37_0
anaconda-project 0.8.2 py37_0
annoy 1.14.0 pypi_0 pypi
我要conda install
此文件中列出的所有包,并指定版本。
我的想法是在所有行(从第4行开始)上进行for循环,从第一个和第二个字段中获取值,并保存到PACKAGE
和VERSION
中,然后调用conda install $PACKAGE=$VERSION
(例如conda install pandas=0.20.3
我想要编写一个shell脚本来执行此操作。我已经编写了一个演示文件,只是为了读取第i行和它的第二个字段:
#!/bin/bash
LINES=$(wc -l < conda_env.txt)
for i in {4...10}
do
awk -F '|' 'NR==${i}{print $2}' conda_env.txt
done
它给出错误:awk: bailing out at source line 1
。
您知道这里出了什么问题吗?如何正确操作?
推荐答案
请尝试以下操作:
#!/bin/bash
while read -r package version _; do
[[ $package = "#"* ]] && continue # skip the comment lines
# remove "echo" if the output looks good
echo conda install "$package=$version"
done < "conda_env.txt"
输出:
conda install _ipyw_jlab_nb_ext_conf=0.1.0
conda install absl-py=0.7.1
conda install alabaster=0.7.12
conda install anaconda-client=1.7.2
conda install anaconda-navigator=1.9.7
conda install anaconda-project=0.8.2
conda install annoy=1.14.0
如果输出行符合您的预期,则删除echo
并执行该脚本。
这篇关于从`conda list`输出安装所有内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文