8

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...何かアイデアはありますか?

4

1 に答える 1

5

そして答えは..

PATH=$PATH:$BUILD_DIR/.paybox/swig/bin/
export PATH
echo $PATH | indent
echo "setting SWIG_LIB environment var"
export SWIG_LIB=$BUILD_DIR/.paybox/swig/share/swig/2.0.5/

$ BUILD_DIRは、ビルドパックの実行時にコンテンツがビルドされる場所です。/app/(アプリの実行時に存在する場所)ではありません。

于 2012-08-27T09:22:31.250 に答える