Я бился об стену с этим в течение нескольких дней, но кажется, что если вы хотите установить matplotlib/scipy/scikit-learn с помощью файла requirements.txt, вам нужно делать что-то по одному модулю за раз.
Что мне удалось понять, так это то, что в 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-devel
и lapack-devel
нужны, если вам нужен scipy, а libpng-devel
, freetype-devel
и zlib-devel
нужны для matplotlib.
Другой альтернативой является подключение SSH к экземпляру ec2, связанному с вашим приложением в Elastic Beanstalk, запуск виртуальной среды (source /opt/python/run/venv/bin/activate
) и установка пакетов самостоятельно.
person
nsecord
schedule
08.04.2013