Назад | Перейти на главную страницу

Установка scipy в virtualenv на Elastic Beanstalk

Я использую 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 и numpy в requirements.txt файл, развертывание не удается, потому что numpy должен быть установлен до scipy.

Я могу исправить это, закомментировав scipy от моего requirements.txtи добавив container_commands раздел в мой .ebextensions:

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

Мне не нравится этот подход, потому что я хочу, чтобы все мои требования жили в моем requirements.txt файл для целей разработки. Выборочное комментирование требований к пунктам из requirements.txt файл кажется неправильным и может стать сложным, если у меня есть куча других библиотек, которые зависят от scipy.

Кроме того, сборка scipy из исходного кода занимает очень много времени, особенно на относительно небольших экземплярах EC2. Я пробовал установить, используя yum, но это приводит к использованию старых версий scipy и не имея scipy в виртуальной среде.

Итак, у меня две проблемы:

  1. requirements.txt: Есть ли способ установить scipy в мою виртуальную среду, которая не требует, чтобы я комментировал выборочные требования из моих requirements.txt файл?
  2. Скорость: Есть ли способ предварительно скомпилировать scipy и по-прежнему сделать его доступным в виртуальной среде?

Перед развертыванием приложения следует упаковать его (zip). Этот пакет должен включать все, что нужно вашему приложению, чтобы вам не приходилось предварительно устанавливать модуль при развертывании.