AWS Elastic Beanstalk nicht mit meiner virtualenv: "Kein Modul namens boto"
Ich versuche, AWS Elastic Beanstalk, aber wenn ich eb start
, bekomme ich "ImportError: Kein Modul namens boto kann Nicht ausgeführt aws.push für lokale repository KOPF."
Bin ich in der virtuellen Umgebung meiner Django-Projekt.
Ich lief pip install boto
und es war erfolgreich.
Ich habe pip freeze > requirements.txt
, git add requirements.txt
, und git commit -m 'Added boto to requirements.txt'
alle erfolgreich.
Dann habe ich in der python-shell und importiert boto ohne resultierenden Fehler.
Schließlich lief ich eb start
auf der normalen Kommandozeile wieder. Gleiche "kein Modul namens boto" Fehler.
Scheint es, wie der eb-Befehl starten nicht mit meiner virtualenv. Was soll ich tun?
InformationsquelleAutor Michelle Glauser | 2014-04-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, dies ist ein hack, und ein häßliches, aber es funktionierte.
Nun, der Fehler ist passiert auf der lokalen Maschine, nichts zu tun mit Fernbedienung.
Ich habe boto lokal installiert und ich bin NICHT mit virtualenv (aus meiner eigenen, zum testen einer mehr Barebone-Ansatz).
1 Hinweis wo der Fehler ist passiert - in .git/AWSDevTools/aws/dev_tools.py
2 führen Sie eine nicht-virtualenv python und
3 öffnen, dev_tools.py und fügen Sie diesen auf der Oberseite:
import sys
sys.path.append("/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages")
Da Sie Anhängen sys.Weg, Sie wird nur der import von Modulen aus, die neben, wenn git für aws.push noch nicht gefunden, es in seinen eigenen Sachen.
Behebt das problem für jetzt, außer, dass es erneut auftreten, auf die nächste Verzeichnis, in dem Sie den "eb-init"
4 Geh dahin wo du entpackt hast das CLI. In meinem Fall:
$cd ~/bin/AWS-ElasticBeanstalk-CLI-2.6.1
nun
5 suchen Sie nach dem original dev_tools.py verwendet von eb init
$find ~/bin -name dev_tools.py
~/bin/AWS-ElasticBeanstalk-CLI-2.6.1/AWSDevTools/Linux/scripts/aws/dev_tools.py
Bearbeiten Sie diese Datei wie in #3
wenn Sie eine weitere eb init anderswo werden Sie sehen, dass Ihre hässlichen hack ist auch da.
Nicht toll, aber es funktioniert.
p.s. sorry für die Formatierung, Neuling hier, es ist spät, und ich wanna go skating.
InformationsquelleAutor JL Peyret
Ich hatte ein ähnliches problem mit eb push. Das Problem ist, dass eb git benutzt, während des Prozesses, um die push-Inhalte auf AWS (git aws.push). Sie finden die Skripte in ".git/AWSDevTools/" auf Ihrem repository-dir.
Wenn git läuft es ändert die Umgebungsvariable "$PATH " und fügt "/usr/libexec/git-core:/usr/bin" an den Anfang von $PATH. Dies macht die AWS-scripts zu verwenden /usr/bin/python anstelle des python auf virtualenv, die nicht über boto installiert.
Ich behoben, indem ein wrapper on top der AWS-scripts, die überprüft, ob es eine virtualenv aktiviert und korrigiert die $PATH-variable.
.git/AWSDevTools/pre.aws.elasticbeanstalk.push
Und dann modifiziert .git/config-Datei zu machen, die aws.push-alias-Aufruf der wrapper -
InformationsquelleAutor Gabriel