Angeben von Abhängigkeiten mithilfe einer Anforderungsdatei - AWS Elastic Beanstalk

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Angeben von Abhängigkeiten mithilfe einer Anforderungsdatei

Eine typische Python-Anwendung weist Abhängigkeiten zu anderen Python-Paketen von Drittanbietern auf. Mit der Elastic Beanstalk Python-Plattform haben Sie die Möglichkeit, Python-Pakete anzugeben, von denen Ihre Anwendung abhängt.

Verwendung von pip und requirements.txt

Das Standardwerkzeug für die Installation von Python-Paketen ist pip. Es hat eine Funktion, mit der Sie alle benötigten Pakete (und deren Versionen) in einer einzelnen Anforderungsdatei spezifizieren können. Weitere Informationen zur Anforderungsdatei finden Sie unter Format der Anforderungsdatei in der Website zur pip-Dokumentation.

Erstellen Sie eine Datei mit dem Namen requirements.txt, und speichern Sie diese im höchsten Verzeichnis Ihres Quell-Bundles. Das folgende Beispiel zeigt eine requirements.txt-Beispieldatei für Django.

Django==2.2 mysqlclient==2.0.3

In der Entwicklungsumgebung können Sie die Anforderungsdatei mit dem Befehl pip freeze generieren.

~/my-app$ pip freeze > requirements.txt

Damit sichergestellt ist, dass die Anforderungsdatei nur die tatsächlich von der Anwendung genutzten Pakete enthält, sollten Sie eine virtuelle Umgebung verwenden, in der nur diese Pakete installiert sind. Außerhalb einer virtuellen Umgebung sind in der Ausgabe von pip freeze alle pip-Pakete enthalten, die auf dem Entwicklungscomputer installiert sind, darunter auch solche, die mit dem Betriebssystem ausgeliefert wurden.

Anmerkung

Bei Amazon Linux AMI Python-Plattformversionen unterstützt Elastic Beanstalk Pipenv oder Pipfiles nicht nativ. Wenn Sie mit Pipenv Abhängigkeiten Ihrer Anwendung verwalten, führen Sie den folgenden Befehl aus, um eine requirements.txt-Datei zu generieren.

~/my-app$ pipenv lock -r > requirements.txt

Weitere Informationen finden Sie unter Generating a requirements.txt (Generieren einer Anforderungen.txt) in der Pipenv-Dokumentation.

Verwendung von Pipenv und Pipfile

Pipenv ist ein moderneres Python-Verpackungs-Tool. Es kombiniert die Paketinstallation mit der Erstellung und Verwaltung einer Abhängigkeitsdatei und einem virtualenv für Ihre Anwendung. Weitere Informationen finden Sie unter Pipenv: Python Dev Workflow for Humans (Pipenv: Python Dev Workflow für Menschen).

Pipenv verwaltet zwei Dateien:

  • Pipfile – Diese Datei enthält verschiedene Arten von Abhängigkeiten und Anforderungen.

  • Pipfile.lock – Diese Datei enthält einen Versions-Snapshot, der deterministische Builds ermöglicht.

Sie können die entsprechenden Dateien in Ihrer Entwicklungsumgebung erstellen und in das oberste Verzeichnis des Quellpakets aufnehmen, das Sie in Elastic Beanstalk bereitstellen. Weitere Informationen zu diesen beiden Dateien finden Sie unter Beispiel für Pipfile und Pipfile.lock.

Im folgenden Beispiel wird Pipenv verwendet, um Django und das Django REST-Framework zu installieren. Diese Befehle erstellen die Dateien Pipfile und Pipfile.lock.

~/my-app$ pipenv install django ~/my-app$ pipenv install djangorestframework

Precedence

Wenn Sie mehr als eine der hier beschriebenen Anforderungsdateien hinzufügen, wird Elastic Beanstalk nur eine davon verwenden. Die folgende Liste zeigt die Rangfolge in absteigender Reihenfolge.

  1. requirements.txt

  2. Pipfile.lock

  3. Pipfile

Anmerkung

Ab der Amazon-Linux-2-Plattformversion vom 7. März 2023 gibt Elastic Beanstalk eine Konsolenmeldung aus, die angibt, welche der Abhängigkeitsdateien während einer Bereitstellung verwendet wurde, wenn Sie mehr als eine dieser Dateien bereitstellen.

In den folgenden Schritten wird die Logik beschrieben, der Elastic Beanstalk folgt, um die Abhängigkeiten zu installieren, wenn es eine Instance bereitstellt.

  • Wenn es eine requirements.txt-Datei gibt, verwenden wir den Befehl pip install -r requirements.txt.

  • Ab der Amazon Linux 2-Plattformversion vom 7. März 2023 verwenden wir den Befehl pipenv sync, wenn es keine requirements.txt-Datei gibt, aber eine Pipfile.lock. Vor dieser Veröffentlichung haben wir pipenv install --ignore-pipfile verwendet.

  • Wenn es weder eine requirements.txt-Datei noch eine Pipfile.lock gibt, aber eine Pipfile, verwenden wir den Befehl pipenv install --skip-lock.

  • Wenn keine der drei Anforderungsdateien gefunden wird, installieren wir keine Anwendungsabhängigkeiten.