8

Poiché matplotlib necessita di numpy per essere già installato, ho riscontrato un problema.Come installare matplotlib su Elastic Beanstalk

Per installare altri pacchetti python sul mio ambiente Elastic Beanstalk, utilizzo il file pip requirements.txt. Poiché la configurazione di installazione installa automaticamente i pacchetti in ordine alfabetico, viene sempre installato prima matplotlib che causa un errore.

Qualcuno ha avuto questo problema e conosce un modo per risolverlo con successo?

risposta

7

Ho battuto la mia testa contro il muro con questo per diversi giorni ma sembra che se si desidera installare matplotlib/scipy/scikit-learn utilizzando un file requirements.txt devi fare le cose un modulo alla volta .

Ciò che sono stato in grado di capire è che i pacchetti Elastic Beanstalk non sono installati nella directory dei pacchetti del sito dell'ambiente virtuale finché non ha funzionato correttamente attraverso l'intero file requirements.txt.

Quindi, ad esempio, se si tenta di installare numpy e scipy allo stesso tempo, come ho fatto, fallirà perché scipy non riesce a trovare alcuni moduli numpy (numpy.distutils.core in particolare). Numpy è seduto in /opt/python/run/venv/build in attesa di andare ma pip sta cercando in /opt/python/run/venv/lib/python2.6/site-packages e non trova numpy.

È necessario eseguire un commit con solo numpy nel file requirements.txt e inserirlo in Elastic Beanstalk. Se questo succede al modulo numpy sarà nel posto giusto e quindi puoi fare un secondo commit con i requisiti aggiornati a scipy o matplotlib nel tuo caso.

Fare attenzione al file di configurazione in .ebextensions, è necessario disporre di tutte le dipendenze elencate. In particolare, nella parte superiore del .ebextensions/myapp.config si dovrebbe avere

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

atlas-sse3-devel e lapack-devel sono necessari se si vuole SciPy e libpng-devel, freetype-devel, e zlib-devel sono necessari per matplotlib.

L'altra alternativa è a SSH all'istanza di ec2 associata all'app su Elastic Beanstalk, all'avvio dell'ambiente virtuale (source /opt/python/run/venv/bin/activate) e al pip di installare i pacchetti da soli.

+0

Grazie mille! Mi stava uccidendo. La tua risposta ha funzionato. – TeePaps

+0

Nessun problema. Se non lo hai già fatto, il mio consiglio sarebbe di creare un AMI personalizzato dall'istanza di lavoro in modo da poter riutilizzare l'installazione se lo si spegne o si distribuisce un altro ramo. – nsecord

+1

Non l'ho fatto, ma lo farò sicuramente. – TeePaps

Problemi correlati