2017-12-12 7 views
0

私は、コンピューティングクラスターにホストするという目的でbashスクリプトを書いています。私は、スクリプトを実行してユーザーがそれを実行するためにコンドーム環境を作成し、チームの全員が同じ作業環境を迅速にセットアップできるようにしたいと考えています。BashとConda:実行可能なbashスクリプトを使ってconda環境に非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$ 

これは私の環境がそれにロードされて何のパッケージを持っていないような印象を与えます。これは正しいです?その場合は、スクリプトを変更して、目的のパッケージが指定された環境に正常にインストールされるようにするにはどうすればよいですか。

ありがとうございます!

+0

まず、ロード/そして、私が最初にコードを使用していることを試してみましたピップ –

+0

@AafaqueAbdullah使用して 'med2image'をインストールし、新しく作成されたconda環境をアクティブ: '#負荷環境 ソースはADNI #は、画像処理ソフト ピップがインストールインストールアクティブ化をしかし、うまくいきませんでした。 –

+0

「それはうまくいかない」とはどういう意味ですか? – darthbith

答えて

0

私はこのプロセスを自動化するより良い方法を見つけるために、必要なすべてのパッケージを含むenvironment.ymlファイルを作成しました。これにはpipパッケージも含めることができます。私は、これは同様の問題が発生する可能性があり、将来的に誰を助けることを願って

#!/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 ' ' 

:のように私は、その後、このファイルを参照することで環境を作成する自動化することができ

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 

:私のファイルには、このようになります。

0

コマンド

conda create -n ADNI 

インストールされていないパッケージではなく、さらにPythonやピップで環境を作成します。したがって、環境を有効にしているにもかかわらず、あなたのPATHに表示される他のピップを使用しています。あなたは

conda create -n ADNI python=3.6 

conda installコマンドを使用して、その後最初の環境にピップやPythonをインストールする必要があり、どちらかの環境が作成されたとき、またはすることは、環境が作成されたときに、PIPに沿ってもたらすのPython、または

conda create -n ADNI 
conda install -n ADNI python=3.6 
をインストールします

は、その後にPythonをインストールします。

最高の場合、condaを使用してそのパッケージをインストールします。 pipパッケージからcondaパッケージを作成し、Anaconda.orgのチャンネルにアップロードしてチームがアクセスできるようにすることは、それほど難しいことではありません。

+0

私は 'conda create -n ADNI python = 3.6'に私の呼び出しを調整しましたが、私のADNI環境で' conda list'を見てもまだ空のパッケージリストを取得しています。 –

+0

なぜそれが起こるのか分かりませんし、ここでその振る舞いを再現することはできません...私にとって、createコマンドはPythonとたくさんの依存関係を追加します。環境を作成するときの出力は何ですか? – darthbith

+0

助けてくれてありがとう。私は、必ずしも完全な解決策ではない回避策を見つけることができました。将来のユーザーに同様の問題が発生した場合は、以下の解決策として投稿します。 –

関連する問題