Я уже несколько дней бил головой о стену, но кажется, что если вы хотите установить matplotlib/scipy/scikit-learn, используя файл requirements.txt, вам нужно делать что-то по одному модулю за раз ,
Что я смог понять, так это то, что пакеты Elastic Beanstalk не установлены в каталоге сайтов-пакетов виртуальной среды, пока он не проработает весь файл requirements.txt.
Так, например, если вы пытаетесь установить numpy и scipy одновременно, как я это делал, он будет терпеть неудачу, потому что scipy не может найти определенные numpy-модули (в частности, numpy.distutils.core). Numpy сидит в /opt/python/run/venv/build
в ожидании, но пип смотрит в /opt/python/run/venv/lib/python2.6/site-packages
и не находит numpy.
Вам нужно сделать одно коммит с только numpy в файле requirements.txt и нажать на него до Эластичного 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
) и попробуйте сами установить пакеты.
Спасибо тонну! Это убило меня. Ваш ответ заставил его работать. – TeePaps
Нет проблем. Если вы еще этого не сделали, моим советом было бы создать пользовательский AMI из вашего рабочего экземпляра, чтобы вы могли повторно использовать установку, если вы закроете ее или развернете другую ветку. – nsecord
Я этого не делал, но, безусловно, буду. – TeePaps