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.
Vielen Dank! Das hat mich umgebracht. Ihre Antwort hat es zur Arbeit gebracht. – TeePaps
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
Ich habe es nicht getan, aber ich werde es sicherlich tun. – TeePaps