Heroku buildpacks - 安装Python包使用的可执行文件

时间:2012-04-26 13:54:29

标签: heroku swig

我正在尝试在Heroku上安装M2Crypto。这依赖于SWIG的安装。

我创建了custom compiled swig executablecustom buildpack

我然后git push我的代码到Heroku,自定义buildpack安装SWIG然后尝试安装M2Crypto但由于找不到swig而失败。

这是buildpack自定义:

# 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提示符内工作了该实例的生命周期。

我认为当初始pip install -r requirements运行时,PATH设置存在问题......任何想法?

1 个答案:

答案 0 :(得分:4)

答案是......

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是执行buildpack时构建内容的地方 - 而不是/ app /(应用程序运行时它就在哪里!