web-dev-qa-db-ja.com

Condaコマンドはコマンドプロンプトでは機能するが、bashスクリプトでは機能しない

私のanaconda(4.5.4)は、Linuxターミナル(bash Shell)経由で使用するだけで問題なく動作します。ただし、bashスクリプトでcondaコマンドを実行してもまったく機能しません。

スクリプトtest.shには、次の行が含まれています。

#!/bin/bash
conda --version
conda activate env

現在、bash test.shを実行すると、エラーtest.sh: line 2: conda: command not found test.sh: line 3: conda: command not foundが発生します

Anacondaバージョン> 4.4で推奨されるように、私の.bashrcには

export PATH="/opt/anaconda/bin:$PATH",

だが

. /opt/anaconda/etc/profile.d/conda.sh

ありがとうございました。

7
randomwalker

@darthbithのコメントのおかげで問題を解決しました。

condaはbash関数であり、bash関数は独立したシェル(たとえば、bashスクリプトを実行して開く)に伝播できないため、次の行を追加する必要があります

source /opt/anaconda/etc/profile.d/conda.sh

condaコマンドを呼び出す前にbashスクリプトに追加します。そうでなければ、bashはcondaについて知りません。

8
randomwalker

@randomwalkerのメソッドが機能せず、スクリプトがshなどのより基本的なシェルで実行されない場合、2つのオプションがあります。

  1. これをスクリプトに追加します:eval $(conda Shell.bash hook)

  2. スクリプトを次のように呼び出します:bash -i <scriptname>インタラクティブ環境で実行できるようにします。

0
abalter