私は(私が思っていたものと思われる)簡単なbashスクリプトを書こうとしています:
- virtualenvを実行して$ 1で新しい環境を作成します
- 仮想環境をアクティブ化
- さらにいくつかのことを行う(djangoをインストールする、django-admin.pyをvirtualenvのパスに追加するなど)
ステップ1はかなりうまく機能しますが、virtualenvをアクティブ化できないようです。virtualenvに慣れていない場合はactivate
、仮想環境をアクティブにするファイルを作成します。CLIから、次を使用して実行しますsource
source $env_name/bin/activate
$ env_nameは、明らかに、仮想環境がインストールされているディレクトリの名前です。
私のスクリプトでは、仮想環境を作成した後、次のようにアクティベートスクリプトへのパスを保存します。
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 script-fuはかなり弱いです。私はCLIでかなり快適ですが、これが機能しない非常に愚かな理由がある可能性があります。