8

Поскольку matplotlib требует numpy для установки, я столкнулся с проблемой.Как установить matplotlib на эластичный бобовый станок

Чтобы установить другие пакеты python на мою среду Elastic Beanstalk, я использую файл требований pip.txt. Поскольку конфигурация установки автоматически устанавливает пакеты в алфавитном порядке, сначала устанавливается matplotlib, что вызывает ошибку.

У кого-нибудь была эта проблема и знаете, как ее успешно исправить?

ответ

7

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

+0

Спасибо тонну! Это убило меня. Ваш ответ заставил его работать. – TeePaps

+0

Нет проблем. Если вы еще этого не сделали, моим советом было бы создать пользовательский AMI из вашего рабочего экземпляра, чтобы вы могли повторно использовать установку, если вы закроете ее или развернете другую ветку. – nsecord

+1

Я этого не делал, но, безусловно, буду. – TeePaps