私は(私が思っていたように)次のような単純なbashスクリプトを書き込もうとしています。
- virtualenvを実行して、$1で新しい環境を作成します
- 仮想環境をアクティブ化する
- さらにいくつかのことを行います(djangoをインストールする、virtualenvのパスにdjango-admin.pyを追加するなど)
ステップ1は非常にうまく機能しますが、virtualenvをアクティブ化できないようです。virtualenvに慣れていない人のためにactivate
、仮想環境をアクティブ化するファイルを作成します。CLIから、を使用して実行しますsource
source $env_name/bin/activate
ここで、$ env_nameは、明らかに、仮想envがインストールされているディレクトリの名前です。
私のスクリプトでは、仮想環境を作成した後、次のようにアクティブ化スクリプトへのパスを保存します。
activate="`pwd`/$ENV_NAME/bin/activate"
しかし、私が電話するとsource "$activate"
、私はこれを取得します:
/home/clawlor/bin/scripts/djangoenv: 20: source: not found
$activate
アクティベートスクリプトへの正しいパスが含まれていることはわかっています。実際、を呼び出す前に、ファイルがそこにあることをテストしていますsource
。しかし、source
それ自体はそれを見つけることができないようです。また、CLIですべての手順を手動で実行してみましたが、すべてが正常に機能します。
私の調査では、このスクリプトが必要であることがわかりましたが、すべての仮想環境を〜/ .virtualenvディレクトリ(またはにあるもの)に保存するなど、必要のない他の多くのことも実行しています。 $ WORKON_HOME)。しかし、彼はへの道を作り、基本的に私と同じようにactivate
呼びかけているように私には思えます。source "$activate"
スクリプト全体は次のとおりです。
#!/bin/sh
PYTHON_PATH=~/bin/python-2.6.1/bin/python
if [ $# = 1 ]
then
ENV_NAME="$1"
virtualenv -p $PYTHON_PATH --no-site-packages $ENV_NAME
activate="`pwd`/$ENV_NAME/bin/activate"
if [ ! -f "$activate" ]
then
echo "ERROR: activate not found at $activate"
return 1
fi
source "$activate"
else
echo 'Usage: djangoenv ENV_NAME'
fi
免責事項:私のbashスクリプト-fuはかなり弱いです。私はCLIにかなり慣れていますが、これが機能しない非常に愚かな理由があるかもしれません。