2012-04-26 2 views
6

J'essaye d'installer M2Crypto sur Heroku. Cela dépend de l'installation de SWIG. J'ai créé custom compiled swig executable et custom buildpack.Heroku buildpacks - installation des exécutables utilisés par les paquets Python

Je puis git push mon code jusqu'à Heroku, le buildpack personnalisé installe SWIG puis essaie d'installer M2Crypto mais échoue car il ne peut pas trouver swig.

C'est la personnalisation de 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/ 

Cela se produit avant toute pip install commandes sont exécutées.

Si je heroku run bash puis exécute manuellement source .heroku/venv/bin/activate && pip install M2Crypto il installe pas de problème et mon application fonctionne à l'invite bash pour la durée de vie de cette instance.

Je pense qu'il y a un problème avec le réglage PATH lorsque le pip install -r requirements initial fonctionne ... des idées?

+0

les pistes app Thank you! Bonne question, car j'essaie aussi d'installer M2Crypto, encore mieux: merci de créer et de partager votre binpack! Vous devriez poster votre réponse ci-dessous pour que vous en ayez le crédit. – culix

+0

Brillant - merci pour ce qui précède! – jvc26

+0

Cela a fonctionné très bien. Malheureusement, cela a cessé de fonctionner pour moi. J'ai donc cloné l'heroku-buildpack-python officiel et ajouté les lignes de neede pour SWIG: https://github.com/CulturePlex/heroku-buildpack-python –

Répondre

4

Et la réponse est ..

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 est l'endroit où les choses se construit lorsque le buildpack est exécuté - pas/app/(qui est l'endroit où il vit quand

Questions connexes