Установка scipy в virtualenv на Elastic Beanstalk
Я использую Elastic Beanstalk от Amazon для развертывания примера приложения 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
в виртуальной среде.
Итак, у меня есть две проблемы:
- needs.txt: есть ли способ установить
scipy
в моей виртуальной среде, которая не требует, чтобы я закомментировал выборочные требования от моегоrequirements.txt
файл? - Скорость: есть ли способ предварительно скомпилировать scipy и сделать его доступным в виртуальной среде?
1 ответ
Вы должны упаковать свое приложение (zip) перед его развертыванием. Этот пакет должен включать все необходимые приложения, чтобы вам не нужно было предварительно устанавливать модуль при развертывании.