Pourquoi ces paquets apt ne se comportent-ils pas de la même manière sur Ubuntu et Heroku?

Je veux utiliser ZBar de Python sur Heroku . Sur un serveur Ubuntu 14.04 classique, je peux exécuter soit

sudo apt-get install python-qrtools 

— OU —

 sudo apt-get install zbar-tools sudo apt-get install libzbar-dev sudo apt-get install python-zbar 

Après le premier ou le dernier, je peux import zbar un import zbar depuis Python. Donc, en utilisant heroku-buildpack-apt (en combinaison avec heroku-buildpack-multi ), j’ai essayé les deux options. Dans les deux cas, il semble tout installer correctement sans erreurs (voir les journaux d’installation ci-dessous), mais essayer sur une ligne de commande python donne toujours:

 >>> import zbar Traceback (most recent call last): File "", line 1, in  ImportError: No module named zbar 

Voyant que les journaux Heroku (ci-dessous) listent la dissortingbution Linux sous Ubuntu Trusty (= 14.04), je ne vois pas pourquoi cela fonctionne sur mon propre install 14.04, mais ne fonctionne pas sur Heroku.

Est-ce que quelqu’un sait pourquoi cela ne fonctionne pas et comment je peux installer les paquets nécessaires sur Heroku? Tous les conseils sont les bienvenus!

Heroku installe les journaux en essayant d’installer python-qrtools :

 remote: =====> Downloading Buildpack: https://github.com/ddollar/heroku-buildpack-apt remote: =====> Detected Framework: Apt remote: -----> Updating apt caches remote: Ign http://archive.ubuntu.com trusty InRelease remote: Ign http://archive.ubuntu.com trusty-security InRelease remote: Ign http://archive.ubuntu.com trusty-updates InRelease remote: Hit http://archive.ubuntu.com trusty Release.gpg remote: Hit http://archive.ubuntu.com trusty-security Release.gpg remote: Hit http://archive.ubuntu.com trusty-updates Release.gpg remote: Hit http://archive.ubuntu.com trusty Release remote: Hit http://archive.ubuntu.com trusty-security Release remote: Hit http://archive.ubuntu.com trusty-updates Release remote: Hit http://archive.ubuntu.com trusty/main amd64 Packages remote: Hit http://archive.ubuntu.com trusty/universe amd64 Packages remote: Hit http://archive.ubuntu.com trusty/main Translation-en remote: Hit http://archive.ubuntu.com trusty/universe Translation-en remote: Hit http://archive.ubuntu.com trusty-security/main amd64 Packages remote: Hit http://archive.ubuntu.com trusty-security/main Translation-en remote: Hit http://archive.ubuntu.com trusty-updates/main amd64 Packages remote: Hit http://archive.ubuntu.com trusty-updates/main Translation-en remote: Ign http://archive.ubuntu.com trusty/main Translation-en_US remote: Ign http://archive.ubuntu.com trusty/universe Translation-en_US remote: Reading package lists... remote: -----> Fetching .debs for python-qrtools remote: Reading package lists... remote: Building dependency tree... remote: The following extra packages will be installed: remote: libqrencode3 libv4l-0 libv4lconvert0 libwebp5 libwebpmux1 libzbar0 remote: python-imaging python-pil python-zbar qrencode remote: Suggested packages: remote: python-pil-doc python-pil-dbg remote: The following NEW packages will be installed: remote: libqrencode3 libv4l-0 libv4lconvert0 libwebp5 libwebpmux1 libzbar0 remote: python-imaging python-pil python-qrtools python-zbar qrencode remote: 0 upgraded, 11 newly installed, 0 to remove and 81 not upgraded. remote: Need to get 0 B/721 kB of archives. remote: After this operation, 2,724 kB of additional disk space will be used. remote: Download complete and in download only mode remote: -----> Installing libqrencode3_3.4.2-1_amd64.deb remote: -----> Installing libv4l-0_1.0.1-1_amd64.deb remote: -----> Installing libv4lconvert0_1.0.1-1_amd64.deb remote: -----> Installing libwebp5_0.4.0-4_amd64.deb remote: -----> Installing libwebpmux1_0.4.0-4_amd64.deb remote: -----> Installing libzbar0_0.10+doc-9build1_amd64.deb remote: -----> Installing python-imaging_2.3.0-1ubuntu3_all.deb remote: -----> Installing python-pil_2.3.0-1ubuntu3_amd64.deb remote: -----> Installing python-qrtools_1.4~bzr16-1ubuntu1_all.deb remote: -----> Installing python-zbar_0.10+doc-9build1_amd64.deb remote: -----> Installing qrencode_3.4.2-1_amd64.deb remote: -----> Writing profile script remote: =====> Downloading Buildpack: https://github.com/heroku/heroku-buildpack-python.git remote: =====> Detected Framework: Python remote: -----> Installing dependencies with pip remote: Cleaning up... remote: remote: Using release configuration from last framework (Python). remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... done, 39.4MB remote: -----> Launching... done, v22 remote: https://mysterious-man-1234.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done. 

Heroku installe les journaux lors de l’installation de zbar-tools , libzbar-dev et python-zbar :

 remote: =====> Downloading Buildpack: https://github.com/ddollar/heroku-buildpack-apt remote: =====> Detected Framework: Apt remote: -----> Updating apt caches remote: Ign http://archive.ubuntu.com trusty InRelease remote: Ign http://archive.ubuntu.com trusty-security InRelease remote: Ign http://archive.ubuntu.com trusty-updates InRelease remote: Hit http://archive.ubuntu.com trusty Release.gpg remote: Get:1 http://archive.ubuntu.com trusty-security Release.gpg [933 B] remote: Get:2 http://archive.ubuntu.com trusty-updates Release.gpg [933 B] remote: Hit http://archive.ubuntu.com trusty Release remote: Get:3 http://archive.ubuntu.com trusty-security Release [62.0 kB] remote: Get:4 http://archive.ubuntu.com trusty-updates Release [62.0 kB] remote: Hit http://archive.ubuntu.com trusty/main amd64 Packages remote: Hit http://archive.ubuntu.com trusty/universe amd64 Packages remote: Hit http://archive.ubuntu.com trusty/main Translation-en remote: Hit http://archive.ubuntu.com trusty/universe Translation-en remote: Get:5 http://archive.ubuntu.com trusty-security/main amd64 Packages [181 kB] remote: Hit http://archive.ubuntu.com trusty-security/main Translation-en remote: Get:6 http://archive.ubuntu.com trusty-updates/main amd64 Packages [384 kB] remote: Hit http://archive.ubuntu.com trusty-updates/main Translation-en remote: Ign http://archive.ubuntu.com trusty/main Translation-en_US remote: Ign http://archive.ubuntu.com trusty/universe Translation-en_US remote: Fetched 691 kB in 3s (219 kB/s) remote: Reading package lists... remote: -----> Fetching .debs for zbar-tools remote: Reading package lists... remote: Building dependency tree... remote: The following extra packages will be installed: remote: libv4l-0 libv4lconvert0 libzbar0 remote: The following NEW packages will be installed: remote: libv4l-0 libv4lconvert0 libzbar0 zbar-tools remote: 0 upgraded, 4 newly installed, 0 to remove and 81 not upgraded. remote: Need to get 0 B/231 kB of archives. remote: After this operation, 861 kB of additional disk space will be used. remote: Download complete and in download only mode remote: -----> Fetching .debs for libzbar-dev remote: Reading package lists... remote: Building dependency tree... remote: The following extra packages will be installed: remote: libmagick++-dev libmagick++5 libv4l-0 libv4lconvert0 libzbar0 remote: The following NEW packages will be installed: remote: libmagick++-dev libmagick++5 libv4l-0 libv4lconvert0 libzbar-dev libzbar0 remote: 0 upgraded, 6 newly installed, 0 to remove and 81 not upgraded. remote: Need to get 0 B/563 kB of archives. remote: After this operation, 2,980 kB of additional disk space will be used. remote: Download complete and in download only mode remote: -----> Fetching .debs for python-zbar remote: Reading package lists... remote: Building dependency tree... remote: The following extra packages will be installed: remote: libv4l-0 libv4lconvert0 libzbar0 remote: The following NEW packages will be installed: remote: libv4l-0 libv4lconvert0 libzbar0 python-zbar remote: 0 upgraded, 4 newly installed, 0 to remove and 81 not upgraded. remote: Need to get 0 B/225 kB of archives. remote: After this operation, 873 kB of additional disk space will be used. remote: Download complete and in download only mode remote: -----> Installing libmagick++5_8%3a6.7.7.10-6ubuntu3_amd64.deb remote: -----> Installing libmagick++-dev_8%3a6.7.7.10-6ubuntu3_amd64.deb remote: -----> Installing libqrencode3_3.4.2-1_amd64.deb remote: -----> Installing libv4l-0_1.0.1-1_amd64.deb remote: -----> Installing libv4lconvert0_1.0.1-1_amd64.deb remote: -----> Installing libwebp5_0.4.0-4_amd64.deb remote: -----> Installing libwebpmux1_0.4.0-4_amd64.deb remote: -----> Installing libzbar0_0.10+doc-9build1_amd64.deb remote: -----> Installing libzbar-dev_0.10+doc-9build1_amd64.deb remote: -----> Installing python-imaging_2.3.0-1ubuntu3_all.deb remote: -----> Installing python-pil_2.3.0-1ubuntu3_amd64.deb remote: -----> Installing python-qrtools_1.4~bzr16-1ubuntu1_all.deb remote: -----> Installing python-zbar_0.10+doc-9build1_amd64.deb remote: -----> Installing qrencode_3.4.2-1_amd64.deb remote: -----> Installing zbar-tools_0.10+doc-9build1_amd64.deb remote: -----> Writing profile script remote: Using release configuration from last framework (Apt). remote: -----> Discovering process types remote: Procfile declares types -> web remote: remote: -----> Compressing... done, 39.8MB remote: -----> Launching... done, v24 remote: https://mystery-man-1234.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done. 

Avec l’aide incroyable de @PadraicCunningham, j’ai réussi à trouver la solution. Le problème a été que heroku-buildpack-apt installe les choses dans un nouveau dossier /app/.apt/ qui n’était pas dans le PYTHONPATH.

J’ai donc ajouté le dossier correspondant à mon PYTHONPATH sur heroku comme suit:

 heroku config:add PYTHONPATH=/app/.apt/usr/lib/python2.7/dist-packages/ 

Cela a résolu le problème. Encore un grand merci à PadraicCunningham de m’avoir aidé à trouver ce numéro!