如何在 Elastic Beanstalk 上安装 matplotlib

Posted

技术标签:

【中文标题】如何在 Elastic Beanstalk 上安装 matplotlib【英文标题】:How to install matplotlib on Elastic Beanstalk 【发布时间】:2013-03-21 07:11:17 【问题描述】:

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

要在我的 Elastic Beanstalk 环境中安装其他 python 包,我使用 pip requirements.txt 文件。因为安装配置会自动按字母顺序安装包,所以 matplotlib 总是先安装,这会导致错误。

有没有人遇到过这个问题并且知道成功解决它的方法?

【问题讨论】:

【参考方案1】:

这几天我一直在碰壁,但似乎如果你想使用 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: []

atlas-sse3-devellapack-devel 如果你想要 scipy 是必需的,libpng-develfreetype-develzlib-devel 对于 matplotlib 是必需的。

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

【讨论】:

非常感谢!那真是要了我的命。你的回答让它起作用了。 没问题。如果您还没有这样做,我的建议是从您的工作实例创建一个自定义 AMI,以便在您关闭它或部署另一个分支时可以重用安装。 我终于回来工作了。您的建议是使用自定义 AMI。而不是这个,我觉得更好的方法是在我的 conf 文件中编写一个脚本来实现它。对此有什么想法吗? 创建一个脚本是一件好事,但它有点棘手。如果您查看documentation for a custom environment,将您的脚本放在命令标题下似乎是合乎逻辑的,但这些是“在设置应用程序和 Web 服务器之前”运行的,所以我认为您无法访问虚拟环境。唯一的另一种选择是 Container_commands 但我认为这些命令是在读取 requirements.txt 之后执行的,因此您的脚本必须在所有其他模块之后安装 numpy/matplotlib。 我想说的是,您需要从 requirements.txt 文件中提取所有依赖项,并在脚本中单独运行它们,以确保以正确的顺序完成。跨度>

以上是关于如何在 Elastic Beanstalk 上安装 matplotlib的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Amazon 的 Elastic Beanstalk 上安装 Python 脚本?

如何使用配置文件 (.ebextensions) 在 AWS Elastic Beanstalk 上安装 PHP IMAP 扩展?

如何在 Elastic Beanstalk 上安装 AWS PHP 开发工具包? [关闭]

如何在 AWS Elastic Beanstalk 或 Google App Engine 上使用没有 pip 安装的 Python 库?

如何在 AWS Elastic Beanstalk 上使用 virtualenv 系统站点包?

text 在Elastic Beanstalk上安装telegraf代理