8

Weil Matplotlib numpy bereits installiert sein muss, habe ich ein Problem festgestellt.Wie installiere ich Matplotlib auf Elastic Beanstalk

Um andere Python-Pakete in meiner Elastic Beanstalk-Umgebung zu installieren, verwende ich die pip requirements.txt-Datei. 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?

Antwort

7

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

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

Also zum Beispiel, wenn Sie versuchen, numpy und scipy gleichzeitig zu installieren, wie ich tat, wird es fehlschlagen, weil scipy bestimmte numpy Module (numpy.distutils.core spezifisch) 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 nicht numpy.

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

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

packages: 
    yum: 
    gcc-c++: [] 
    gcc-gfortran: [] 
    python-devel: [] 
    atlas-sse3-devel: [] 
    lapack-devel: [] 
    libpng-devel: [] 
    freetype-devel: [] 
    zlib-devel: [] 

atlas-sse3-devel und lapack-devel werden benötigt, um, wenn Sie scipy und libpng-devel wollen, freetype-devel und zlib-devel für matplotlib benötigt. 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.

+0

Vielen Dank! Das hat mich umgebracht. Ihre Antwort hat es zur Arbeit gebracht. – TeePaps

+0

Kein Problem. Falls Sie dies noch nicht getan haben, würde ich Ihnen empfehlen, ein benutzerdefiniertes AMI von Ihrer Arbeitsinstanz zu erstellen, damit Sie die Installation wiederverwenden können, wenn Sie sie herunterfahren oder eine andere Verzweigung bereitstellen. – nsecord

+1

Ich habe es nicht getan, aber ich werde es sicherlich tun. – TeePaps

Verwandte Themen