我使用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
然后,我使用pip freeze > requirements.txt
创建了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-library依赖项(例如:libjpeg8-dev,libfreetype和libpng6-dev)。我可以在本地安装这些依赖项(例如:via apt-get
)。但是,这也没有被pip记录。
所以,我的问题是:如何在heroku部署服务器中正确安装matplotlib?
答案 0 :(得分:5)
最后我能够管理它。
首先,我使用这个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
答案 1 :(得分:2)
对于那些目前正在寻找这个答案的人,我刚刚部署了最新的matoku,最新的matplotlib / numpy作为要求(分别为1.4.3,1.9.2),没有任何问题。
答案 2 :(得分:1)
我也很难将matplotlib
与heroku
一起使用,而且很难找到答案。 This帮助了我。
基本上,您需要做的是push the project with numpy
中的requirements.txt
。只有在此之后我们必须add pandas and matplotlib
到requirements.txt
。
答案 3 :(得分:0)
我遇到了同样的问题,然后我在heroku的建筑应用程序中注意到,通过安装matplotlib,它想要重新安装numpy并在那里崩溃。我从需求文件中删除了numpy,一切顺利。