在 Elastic Beanstalk 上的 virtualenv 中安装 scipy

在 Elastic Beanstalk 上的 virtualenv 中安装 scipy

我正在使用 Amazon 的 Elastic Beanstalk 部署示例 Flask 应用程序。我可以完美地部署一个简单的“Hello World”应用程序,但现在我正尝试根据scipy要求部署该应用程序。

我已将必要的软件包包含在我的.ebextensions/

packages:
    yum:
        gcc-c++: []
        gcc-gfortran: []
        python27-devel: []
        atlas-sse3-devel: []
        lapack-devel: []
        libpng-devel: []
        zlib-devel: []
        postgresql93-devel: []

如果我离开scipy文件numpyrequirements.txt部署将失败,因为numpy必须在之前安装scipy

我可以通过scipy从我的中注释掉requirements.txt并向我的 添加一个container_commands部分来解决此问题.ebextensions

container_commands:
    01_install_scipy:
        command: "pip install scipy"

我不喜欢这种方法,因为我希望所有需求都存在于我的requirements.txt文件中以用于开发目的。选择性地从文件中注释掉 pip 需求requirements.txt感觉不对,而且如果我有一堆依赖于 的其他库,可能会变得很复杂scipy

此外,从源代码构建 scipy 需要很长时间,尤其是在相对较小的 EC2 实例上。我曾尝试使用 进行安装yum,但这会导致使用 的旧版本,而虚拟环境中scipy没有。scipy

所以,我有两个问题:

  1. 要求.txt:有没有什么方法可以安装scipy到我的虚拟环境中而不需要我从我的文件中注释掉选择性要求requirements.txt
  2. 速度:有没有办法预编译 scipy 并仍然使其在虚拟环境中可用?

答案1

您应该在部署应用程序之前将其打包(zip)。此包应包含应用程序所需的所有依赖项,这样您就不必在部署时预先安装模块。

相关内容