如何在Elastic Beanstalk上安装matplotlib

时间:2013-03-30 19:34:31

标签: django numpy amazon-web-services matplotlib elastic-beanstalk

因为matplotlib需要已经安装numpy,所以我遇到了一个问题。

要在我的Elastic Beanstalk环境中安装其他python包,我使用pip requirements.txt文件。由于安装配置会按字母顺序自动安装软件包,因此始终首先安装matplotlib,这会导致错误。

有没有人遇到过这个问题,并且知道如何成功修复它?

1 个答案:

答案 0 :(得分:8)

我已经连续几天撞墙了,但似乎如果你想使用requirements.txt文件安装matplotlib / scipy / scikit-learn,你需要一次做一个模块。

我能够理解的是,Elastic Beanstalk软件包未安装在虚拟环境的site-packages目录中,直到它成功完成整个requirements.txt文件。

因此,例如,如果您尝试同时安装numpy和scipy,就像我一样,它会失败,因为scipy找不到某些numpy模块(具体来说是numpy.distutils.core)。 Numpy坐在/opt/python/run/venv/build等待着去,但是pip正在寻找/opt/python/run/venv/lib/python2.6/site-packages并且找不到numpy。

您需要在requirements.txt文件中只使用numpy进行一次提交,并将其推送到Elastic Beanstalk。如果成功,numpy模块将在正确的位置,然后您可以进行第二次提交,其中需求已更新为scipy或matplotlib。

请注意.ebextensions中的配置文件,您需要列出所有依赖项。具体来说,在.ebextensions/myapp.config的顶部你应该有

packages:
  yum:
    gcc-c++: []
    gcc-gfortran: []
    python-devel: []
    atlas-sse3-devel: []
    lapack-devel: []
    libpng-devel: []
    freetype-devel: []
    zlib-devel: []
如果您想要scipy,则需要

atlas-sse3-devellapack-devel,并且matplotlib需要libpng-develfreetype-develzlib-devel

另一种方法是通过SSH连接到与Elastic Beanstalk上的应用相关联的ec2实例,启动虚拟环境(source /opt/python/run/venv/bin/activate)并自行安装包。