So installieren Sie Matplotlib auf Elastic Beanstalk

8

Weil Matplotlib bereits installiert sein muss, habe ich ein Problem festgestellt.

Um andere Python-Pakete in meiner Elastic Beanstalk-Umgebung zu installieren, verwende ich die Datei pip requirements.txt. Da die Setup-Konfiguration die Pakete automatisch in alphabetischer Reihenfolge installiert, wird immer zuerst matplotlib installiert, was zu einem Fehler führt.

Hat jemand dieses Problem gehabt und weiß, wie man es erfolgreich beheben kann?

    
TeePaps 30.03.2013, 19:34
quelle

1 Antwort

7

Ich habe meinen Kopf damit für mehrere Tage gegen die Wand geschlagen, aber es scheint, dass wenn Sie matplotlib / scipy / scikit-learn mit einer requirements.txt-Datei installieren wollen, Sie die Dinge Modul für Modul tun müssen.

Was ich verstehen konnte, ist, dass Packages von Elastic Beanstalk nicht im Site-Packages-Verzeichnis der virtuellen Umgebung installiert werden, bis es sich erfolgreich durch die gesamte requirements.txt-Datei durchgearbeitet hat.

Wenn Sie zum Beispiel versuchen, numpy und scipy gleichzeitig zu installieren, wird dies fehlschlagen, weil scipy bestimmte numpige Module (numpy.distutils.core) nicht finden kann. Numpy sitzt in /opt/python/run/venv/build und wartet, um zu gehen, aber pip sucht in /opt/python/run/venv/lib/python2.6/site-packages und findet numpy nicht.

Sie müssen einen Commit mit nur numpy in Ihrer requirements.txt-Datei machen und diesen zu Elastic Beanstalk hochschieben. Wenn dies erfolgreich ist, wird das numpy Modul an der richtigen Stelle sein und Sie können dann ein zweites Commit mit Anforderungen durchführen, die in Ihrem Fall auf scipy oder matplotlib aktualisiert wurden.

Seien Sie vorsichtig mit Ihrer Konfigurationsdatei in .extensions, Sie müssen alle Abhängigkeiten aufgelistet haben. Insbesondere sollten Sie oben in .ebextensions/myapp.config

haben %Vor%

atlas-sse3-devel und lapack-devel werden benötigt, wenn scipy und libpng-devel , freetype-devel und zlib-devel für matplotlib benötigt werden.

Die andere Alternative ist SSH zu der ec2-Instanz, die mit Ihrer App auf Elastic Beanstalk verbunden ist, starten Sie die virtuelle Umgebung ( source /opt/python/run/venv/bin/activate ) und pip installieren Sie die Pakete selbst.

    
nsecord 08.04.2013, 14:30
quelle