linux - Bash 和 conda : Installing non-conda packages in conda environment with executable bash script

标签 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$ 

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

谢谢!

最佳答案

我设法通过创建包含所有所需包的 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 ' '

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

关于linux - Bash 和 conda : Installing non-conda packages in conda environment with executable bash script,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47780634/

相关文章:

python - 循环 sys.args

python - 如何将 Python 虚拟环境转移给其他用户?

bash - 在 bash 脚本中读取函数中的标准输入

Swift 脚本直接在 Xcode Run Script 阶段运行,但由于 NSTask/Process 而不能通过外部文件运行

linux - 在 CircleCI 命令中设置环境变量

linux - iNotify 能否告诉我受监控的文件移动到了哪里?

bash - 如何制作一个创建 40 个程序同时实例的 bash 脚本?

mysql - 在.bash_profile中已经设置了路径但仍然得到 '-bash: mysql: command not found'

bash:通过 ssh 并行执行命令

BASH 通配符 : Select all variables (not the content)