5

我已经使用 pip 在我的 virtualenv 中安装了 matplotlib。一开始是失败的,但是在我这样做之后easy_install -U distribute,安装就很顺利了。

这是我所做的(在我的 git 存储库根文件夹中):

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

然后,我使用 .txt 制作了一个 requirements.txt pip freeze > requirements.txt。结果如下:

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

当我尝试部署我的应用程序时发生了问题:

(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$ 

似乎 heroku 服务器无法正确安装 matplotlib。

当我这样做时easy_install -U distribute,它可能不会被 pip 记录。

Matplotlib 还有几个非 python 库依赖项(例如:libjpeg8-dev、libfreetype 和 libpng6-dev)。我可以在本地安装这些依赖项(例如:通过apt-get)。但是,这也没有被 pip 记录。

所以,我的问题是:如何在 heroku 部署服务器中正确安装 matplotlib?

4

4 回答 4

6

最后我能够管理这个。

首先,我使用这个 buildpack:https ://github.com/dbrgn/heroku-buildpack-python-sklearn 要使用这个 buildpack 我运行这个(也许这不是必要的步骤):

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

然后我将 requirements.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

matplotlib 生成的图

于 2013-08-12T10:18:00.240 回答
2

对于那些目前正在寻找这个答案的人,我只是在最新的 heroku 上部署了最新的 matplotlib/numpy 作为要求(分别为 1.4.3、1.9.2),没有任何问题。

于 2015-05-10T18:26:20.630 回答
2

我也很难使用matplotlibwith heroku,而且很难找到答案。对我有帮助。

基本上你要做的就是push the project with numpyrequirements.txt. 只有在这之后我们才能add pandas and matplotlibrequirements.txt

于 2018-05-15T07:42:36.097 回答
0

我遇到了同样的问题,然后我在 heroku 的构建应用程序中注意到,通过安装 matplotlib,它想重新安装 numpy,然后它就崩溃了。我从需求文件中删除了 numpy 并且进展顺利。

于 2020-11-03T02:03:45.250 回答