Установка 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) перед его развертыванием. Этот пакет должен включать все необходимые приложения, чтобы вам не нужно было предварительно устанавливать модуль при развертывании.