【问题标题】:Heroku buildpacks - installing executables that are used by Python packagesHeroku buildpacks - 安装 Python 包使用的可执行文件
【发布时间】:2015-05-05 21:41:56
【问题描述】:

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

我创建了一个custom compiled swig executable 和一个custom buildpack

然后我 git push 我的代码到 Heroku,自定义 buildpack 安装 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 提示符下运行。

我认为初始 pip install -r requirements 运行时 PATH 设置有问题...有什么想法吗?

【问题讨论】:

  • 感谢您发布此信息!好问题,因为我也在尝试安装 M2Crypto。更好的是:感谢您创建和分享您的 binpack!你应该在下面发布你的答案,这样你就可以得到它的功劳。我会很高兴地支持你:)
  • 太棒了——感谢以上内容!
  • 效果很好。不幸的是,它停止为我工作。所以我克隆了官方的 heroku-buildpack-python 并为 SWIG 添加了需要的行:github.com/CulturePlex/heroku-buildpack-python

标签: heroku swig


【解决方案1】:

答案是……

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/(应用运行时它所在的位置!

【讨论】:

    猜你喜欢
    • 2017-10-13
    • 1970-01-01
    • 2014-01-08
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 2016-01-15
    • 2013-09-24
    相关资源
    最近更新 更多