Deploying matplotlib on heroku failed. How to do it right?

I installed matplotlib in my virtualenv using pip. It was a failure at the beginning, but after easy_install -U distributeinstallation it went smoothly.

Here is what I do (inside my git repository root folder):

virtualenv env
source env/bin/activate
pip install gunicorn
pip install numpy
easy_install -U distribute
pip install matplotlib

Then I create the requirements.txt file with pip freeze > requirements.txt. Here is the result:

argparse==1.2.1
distribute==0.7.3
gunicorn==17.5
matplotlib==1.3.0
nose==1.3.0
numpy==1.7.1
pyparsing==2.0.1
python-dateutil==2.1
six==1.3.0
tornado==3.1
wsgiref==0.1.2

The problem occurred while trying to deploy my application:

(env)gofrendi@kirinThor:~/kokoropy$ git push -u heroku
Counting objects: 9, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 586 bytes, done.
Total 5 (delta 3), reused 0 (delta 0)

-----> Python app detected
-----> No runtime.txt provided; assuming python-2.7.4.
-----> Using Python runtime (python-2.7.4)
-----> Installing dependencies using Pip (1.3.1)
       Downloading/unpacking distribute==0.7.3 (from -r requirements.txt (line 2))
         Running setup.py egg_info for package distribute

       Downloading/unpacking matplotlib==1.3.0 (from -r requirements.txt (line 4))
         Running setup.py egg_info for package matplotlib
           The required version of distribute (>=0.6.28) is not available,
           and can't be installed while this script is running. Please
           install a more recent version first, using
           'easy_install -U distribute'.

           (Currently using distribute 0.6.24 (/app/.heroku/python/lib/python2.7/site-packages))
           Complete output from command python setup.py egg_info:
           The required version of distribute (>=0.6.28) is not available,

       and can't be installed while this script is running. Please

       install a more recent version first, using

       'easy_install -U distribute'.



       (Currently using distribute 0.6.24 (/app/.heroku/python/lib/python2.7/site-packages))

       ----------------------------------------
       Command python setup.py egg_info failed with error code 2 in /tmp/pip-build-u55833/matplotlib
       Storing complete log in /app/.pip/pip.log

 !     Push rejected, failed to compile Python app

To git@heroku.com:kokoropy.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:kokoropy.git'
(env)gofrendi@kirinThor:~/kokoropy$ 

It seems the heroku server cannot correctly install matplotlib.

When I do easy_install -U distribute, it may not be piped.

Matplotlib also has several non-python library dependencies (such as: libjpeg8-dev, libfreetype, and libpng6-dev). I can install these dependencies locally (for example: through apt-get). However, this is also not peak recorded.

, : matplotlib heroku?

+3
2

, .

, buildpack: https://github.com/dbrgn/heroku-buildpack-python-sklearn buildpack, (, ):

heroku config:set BUILDPACK_URL=https://github.com/dbrgn/heroku-buildpack-python-sklearn/

require.txt :

argparse==1.2.1
distribute==0.6.24
gunicorn==17.5
wsgiref==0.1.2
numpy==1.7.0
matplotlib==1.1.0
scipy==0.11.0
scikit-learn==0.13.1

- matplotlib 1.1.0 ( - 1.3.0). , numpy API. , , .

(, , ) http://kokoropy.herokuapp.com/example/plotting

A matplotlib generated figure

+5

, , matplotlib/numpy (1.4.3, 1.9.2 ) - .

+2

Source: https://habr.com/ru/post/1016887/


All Articles