Heroku に M2Crypto をインストールしようとしています。これは SWIG がインストールされていることに依存しています。
カスタム コンパイル済みswig
実行可能ファイルとカスタム buildpackを作成しました。
次にgit push
、Heroku までのコードを作成します。カスタム ビルドパックは SWIG をインストールし、M2Crypto をインストールしようとしますが、見つからないため失敗しますswig
。
これはビルドパックのカスタマイズです:
# Install SWIG
if [ ! -d $CACHE_DIR/swig ]; then
cd $BUILD_DIR
echo "-----> Fetching and installing SWIG 2"
curl -O https://s3.amazonaws.com/guybowden/swig.tar.gz >/dev/null 2>&1
echo "-----> Installing ..."
tar xzvf swig.tar.gz >/dev/null 2>&1
mv swig $CACHE_DIR/swig
rm swig.tar.gz
echo "SWIG installed" | indent
fi
mkdir -p .paybox
cp -R $CACHE_DIR/swig .paybox
echo "updating path..." | indent
PATH=$PATH:/app/.paybox/swig/bin/
export PATH
echo $PATH | indent
echo "setting SWIG_LIB environment var"
export SWIG_LIB=/app/.paybox/swig/share/swig/2.0.5/
これは、pip install
コマンドが実行される前に発生します。
私がheroku run bash
手動で実行source .heroku/venv/bin/activate && pip install M2Crypto
すると、問題なくインストールされ、私のアプリはそのインスタンスの存続期間中、bash プロンプト内で動作します。
初期実行時の PATH 設定に問題があると思いますpip install -r requirements
...何かアイデアはありますか?