Bash和Conda:使用可执行的bash脚本在conda环境中安装非conda软件包

时间:2017-12-12 20:00:47

标签: linux bash shell anaconda

我正在编写一个bash脚本,目的是在计算群集上托管它。我希望脚本为执行它的用户创建一个conda环境,这样我们团队中的每个人都可以快速设置相同的工作环境。

我意识到这对于必要的命令数量来说有点过分,但我想练习一些bash脚本。到目前为止,这是我的脚本:

#!/bin/bash

# Load anaconda
module load Anaconda/4.2.0

# Create environment
conda create -n ADNI

# Load environment
source activate ADNI

# Install image processing software
pip install med2image

echo 'A working environment named ADNI has been created.'
echo 'Please run `source activate ADNI` to work in it.'

此脚本成功创建环境。但是,一旦我在运行脚本后加载环境,我运行conda list以查看其中加载了哪些包并获得以下输出:

(ADNI) MLG-BH0039:ADNI_DeepLearning johnca$ conda list
# packages in environment at /Users/johnca/miniconda3/envs/ADNI:
#

(ADNI) MLG-BH0039:ADNI_DeepLearning johnca$ 

这让我觉得环境中没有加载包。它是否正确?如果是这样,我该如何更改脚本以便将所需的包成功安装到指定的环境中。

谢谢!

2 个答案:

答案 0 :(得分:1)

我设法找到一种更好的方法来自动化这个过程,方法是创建一个包含所有所需包的environment.yml文件。这也包括pip包。我的文件看起来像这样:

name: ADNI
channels:
- soumith
- defaults
dependencies:
- ca-certificates=2017.08.26=h1d4fec5_0
- certifi=2017.11.5=py36hf29ccca_0
- cffi=1.11.2=py36h2825082_0
- freetype=2.8=hab7d2ae_1
- intel-openmp=2018.0.0=hc7b2577_8
- jpeg=9b=h024ee3a_2
- libffi=3.2.1=hd88cf55_4
- libgcc=7.2.0=h69d50b8_2
- libgcc-ng=7.2.0=h7cc24e2_2
- libgfortran-ng=7.2.0=h9f7466a_2
- libpng=1.6.32=hbd3595f_4
- libstdcxx-ng=7.2.0=h7a57d05_2
- libtiff=4.0.9=h28f6b97_0
- mkl=2018.0.1=h19d6760_4
- numpy=1.13.3=py36ha12f23b_0
- olefile=0.44=py36h79f9f78_0
- openssl=1.0.2n=hb7f436b_0
- pillow=4.2.1=py36h9119f52_0
- pip=9.0.1=py36h6c6f9ce_4
- pycparser=2.18=py36hf9f622e_1
- python=3.6.0=0
- readline=6.2=2
- scipy=1.0.0=py36hbf646e7_0
- setuptools=36.5.0=py36he42e2e1_0
- six=1.11.0=py36h372c433_1
- sqlite=3.13.0=0
- tk=8.5.18=0
- wheel=0.30.0=py36hfd4bba0_1
- xz=5.2.3=h55aa19d_2
- zlib=1.2.11=ha838bed_2
- pytorch=0.2.0=py36hf0d2509_4cu75
- torchvision=0.1.9=py36h7584368_1
- pip:
  - cycler==0.10.0

然后,我可以通过引用此文件来自动创建环境,如:

#!/bin/bash

# Load anaconda
module load Anaconda/4.2.0

# Create environment
conda env create -f adni_env.yml

echo ' '
echo 'A working environment named ADNI has been created or updated.'
echo 'If working on the cadillac server please `module load Anaconda/4.2.0`.'
echo 'Then run `source activate ADNI` to work within the environment.'
echo ' '

我希望这可以帮助将来可能遇到类似问题的人。

答案 1 :(得分:0)

命令

conda create -n ADNI

创建一个没有安装软件包的环境,甚至不是Python或pip。因此,尽管激活了环境,您仍在使用PATH上显示的其他点子。您需要首先将pip或Python安装到环境中,无论是在创建环境时还是之后使用conda install命令

conda create -n ADNI python=3.6

将安装Python,它在创建环境时带来pip或

conda create -n ADNI
conda install -n ADNI python=3.6

之后将安装Python。

在最好的情况下,您将使用conda来安装该软件包。从pip包创建conda包并将其上传到Anaconda.org上的频道并不困难,以便您的团队可以访问它。