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.
Grazie mille! Mi stava uccidendo. La tua risposta ha funzionato. – TeePaps
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
Non l'ho fatto, ma lo farò sicuramente. – TeePaps