从`conda list`输出安装所有内容 [英] Install everything from a `conda list` output

查看:26
本文介绍了从`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循环,从第一个和第二个字段中获取值,并保存到PACKAGEVERSION中,然后调用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆