2012-04-26 10 views
6

Estoy tratando de instalar M2Crypto en Heroku. Esto se basa en la instalación de SWIG.Heroku buildpacks - instalar ejecutables que son utilizados por los paquetes de Python

He creado un custom compiled swig executable y un custom buildpack.

Mi código hasta Heroku, el buildpack personalizado instala SWIG luego intenta instalar M2Crypto pero falla porque no puede encontrar swig.

Esta es la personalización buildpack: se ejecutan

# 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/ 

Esto ocurre antes de cualquier pip install comandos.

Si yo heroku run bash y luego ejecuto manualmente source .heroku/venv/bin/activate && pip install M2Crypto no se instala ningún problema y mi aplicación funciona dentro del indicador bash durante toda la vida de esa instancia.

Creo que hay un problema con la configuración PATH cuando el pip install -r requirements inicial se ejecuta ... alguna idea?

+0

gracias! ¡por publicar esto! Gran pregunta, ya que también estoy tratando de instalar M2Crypto. Incluso mejor: ¡gracias por crear y compartir tu binpack! Debes publicar tu respuesta a continuación para que puedas obtener el crédito. Te felicito :) – culix

+0

Brillante - gracias por lo de arriba! – jvc26

+0

Esto ha estado funcionando genial. Lamentablemente dejó de funcionar para mí. Así que cloné el heroku-buildpack-python oficial y agregué las líneas necesarias para SWIG: https://github.com/CulturePlex/heroku-buildpack-python –

Respuesta

4

Y la respuesta es ..

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 es donde las cosas se construye cuando se ejecuta el buildpack - no/app/(que es donde vive cuando se ejecuta aplicaciones

Cuestiones relacionadas