AWS Elastic Beanstalk konnte das Python-Paket nicht mithilfe von „requirements.txt Git Pip“ installieren

Lesezeit: 3 Minuten

Ich habe versucht, eine Flask-App auf AWS Elastic Beanstalk bereitzustellen eb deploy aber scheiterte.

ich habe requirements.txt unter dem App-Verzeichnis:

Flask==0.12.2
numpy==1.13.3
pandas==0.21.1
requests==2.18.4
scipy==1.0.0
Werkzeug==0.12.2
-e git+http://github.com/hensing/PyDDE#egg=PyDDE

Und python.config Datei unter .ebextensions Verzeichnis:

packages:
  yum:
    git: []
    gcc-c++: []
    make: []

Die Fehlermeldung lautet:

INFO: Umgebungsaktualisierung wird gestartet.

INFO: Neue Version wird auf Instanz(en) bereitgestellt.

FEHLER: Ihre requirements.txt ist ungültig. Machen Sie einen Snapshot Ihrer Protokolle für Details.

ERROR: [Instance: i-03e92fa3c58b6e010] Befehl auf Instanz fehlgeschlagen. Rückgabecode: 1 Ausgabe: (TRUNCATED)… )

Datei “/usr/lib64/python2.7/subprocess.py”, Zeile 541, in check_call

CalledProcessError (Retcode, cmd) auslösen

CalledProcessError: Der Befehl „/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements .txt“ hat den Exit-Status 2 ungleich Null zurückgegeben.

Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py fehlgeschlagen. Weitere Einzelheiten finden Sie unter /var/log/eb-ac tivity.log mit der Konsole oder der EB-Befehlszeilenschnittstelle.

INFO: Befehlsausführung auf allen Instanzen abgeschlossen. Zusammenfassung: [Successful: 0, Failed: 1].

FEHLER: Nicht erfolgreiche Befehlsausführung auf Instanz-ID(s) „i-03e92fa3c58b6e010“. Abbruch des Vorgangs.

FEHLER: Anwendung konnte nicht bereitgestellt werden.

Und /var/log/eb-activity.log zeigt an:

2018-01-19 04:26:53,878 FEHLER Fehler beim Installieren von Abhängigkeiten: Der Befehl „/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requirements.txt“ gab einen Exit ungleich Null zurück Stand 2

Traceback (letzter Aufruf zuletzt):

Datei “/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py”, Zeile 22, in main

install_dependencies()

Datei „/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py“, Zeile 18, in install_dependencies

check_call(‘%s install -r %s’ % (os.path.join(APP_VIRTUAL_ENV, ‘bin’, ‘pip’), requirements_file), shell=True)

Datei “/usr/lib64/python2.7/subprocess.py”, Zeile 541, in check_call

CalledProcessError (Retcode, cmd) auslösen

CalledProcessError: Der Befehl „/opt/python/run/venv/bin/pip install -r /opt/python/ondeck/app/requiremen ts.txt“ hat den Exit-Status 2 ungleich Null zurückgegeben (Executor::NonZeroExitStatus)

Es scheint, als ob dieses Problem auf das zurückzuführen ist -e git+ Installation wird von AWS Elastic Beanstalk nicht unterstützt?

  • Ich stehe auch vor dem gleichen Problem.

    – Chirag Maliwal

    26. Januar 18 um 13:32 Uhr

Das Problem wurde gelöst.

Es lag NICHT an der Installation von PyDDE.

Der eigentliche Grund war, dass die Installation von Scipy > 40 MB Arbeitsspeicher erfordert und die standardmäßige EC2-Instance, t1.micro, nicht über genügend Arbeitsspeicher verfügt, um sie zu installieren. Es kann durch die Verwendung einer größeren EC2-Instanz behoben werden. Ich gehe schließlich mit t2.medium.

Um Pandas zu installieren, ist außerdem gcc erforderlich. ich veränderte .ebextensions[env_name].config Datei mit dieser: (Ich verwende Python 2.7, von: elasticbeanstalk gcc und python-devel installation)

packages:
  yum:
    git: []
    gcc-c++: []
    python27-devel: []

Sie können eine alternative Methode zum Hinzufügen ausprobieren PyDDE zu Anforderungen

Flask==0.12.2
git+https://github.com/hensing/PyDDE.git

Das hat mir geholfen:

Ich konnte dies beheben, indem ich enum34 = “==1.1.8” zu pyproject.toml hinzufügte. Anscheinend hatte enum34 in v1.1.8 eine Funktion, die diesen Fehler vermied, aber dies wurde in v1.1.9+ rückgängig gemacht. Dies ist jedoch nur eine Problemumgehung. Die bessere Lösung wäre, dass Pakete Umgebungsmarkierungen verwenden, sodass Sie enum34 überhaupt nicht installieren müssen, es sei denn, dies ist erforderlich.

Quelle: https://github.com/python-poetry/poetry/issues/1122

Ich habe eine Datei namens 02_upgrade_pip.config im Ordner .ebextensions erstellt, um pip zu aktualisieren und diese spezifische Version von enum34 jedes Mal zu installieren, wenn eine neue Instanz gestartet wird.

02_upgrade_pip.config

commands:
  01_remove_enum_34:
    command: pip uninstall -y enum34
    ignoreErrors: true
  02_install_enum_34:
    command: pip install enum34==1.1.8
    ignoreErrors: false
  03_pip_upgrade:
    command: /opt/python/run/venv/bin/pip install --upgrade pip
    ignoreErrors: false

.

541660cookie-checkAWS Elastic Beanstalk konnte das Python-Paket nicht mithilfe von „requirements.txt Git Pip“ installieren

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy