Specificazione delle dipendenze utilizzando un file dei requisiti su Elastic Beanstalk - AWS Elastic Beanstalk

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Specificazione delle dipendenze utilizzando un file dei requisiti su Elastic Beanstalk

Questo argomento descrive come configurare l'applicazione per installare altri pacchetti Python richiesti. Un'applicazione Python tipica dispone di dipendenze da altri pacchetti Python di terze parti. Con la piattaforma Elastic Beanstalk Python, hai diversi modi per specificare i pacchetti Python da cui dipende la tua applicazione.

Uso di pip e requirements.txt

Lo strumento standard per l'installazione di pacchetti Python è pip. Dispone di una funzionalità che consente di specificare tutti i pacchetti di cui hai bisogno (nonché le loro versioni) in un singolo file di requisiti. Per ulteriori informazioni sul file di requisiti, consulta Formato del file di requisiti sul sito Web della documentazione pip.

Crea un file denominato requirements.txt e inseriscilo nella directory di livello superiore del tuo bundle di origine. Di seguito è riportato un file requirements.txt di esempio per Django.

Django==2.2 mysqlclient==2.0.3

Nel tuo ambiente di sviluppo, puoi utilizzare il comando pip freeze per generare il tuo file di requisiti.

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

Per verificare che il tuo file di requisiti contenga solo i pacchetti che sono effettivamente utilizzati dall'applicazione, usa un ambiente virtuale che contenga solo quei pacchetti installati. Al di fuori di un ambiente virtuale, l'output di pip freeze includerà tutti i pacchetti pip installati sul computer di sviluppo, inclusi quelli forniti con il sistema operativo.

Nota

Nelle versioni della piattaforma Amazon Linux AMI Python, Elastic Beanstalk non supporta nativamente Pipenv o Pipfiles. Se utilizzi Pipenv per gestire le dipendenze dell'applicazione, esegui il comando seguente per generare un file requirements.txt.

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

Per ulteriori informazioni, consulta Generating a requirements.txt nella documentazione di Pipenv.

Uso di Pipenv e Pipfile

Pipenv è uno strumento di creazione pacchetti Python moderno. Combina l'installazione del pacchetto con la creazione e la gestione di un file delle dipendenze e di un virtualenv per l'applicazione. Per ulteriori informazioni, consulta Pipenv: Python Dev Workflow for Humans.

Pipenv mantiene due file:

  • Pipfile: questo file contiene vari tipi di dipendenze e requisiti.

  • Pipfile.lock: questo file contiene uno snapshot della versione che abilita le build deterministiche.

Puoi crearli nell'ambiente di sviluppo e includerli nella directory di primo livello del bundle di origine che implementi in Elastic Beanstalk. Per ulteriori informazioni su questi due file, consulta Esempio di Pipfile e PipFile.lock.

L'esempio seguente utilizza Pipenv per installare Django e il framework Django. REST Questi comandi creano i file Pipfile e Pipfile.lock.

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

Priorità

Se includi più di un file dei requisiti tra quelli descritti qui, Elastic Beanstalk ne utilizzerà uno solo. L'elenco seguente mostra la precedenza, in ordine decrescente.

  1. requirements.txt

  2. Pipfile.lock

  3. Pipfile

Nota

A partire dalla versione della piattaforma Amazon Linux 2 del 7 marzo 2023, se fornisci più di uno di questi file, Elastic Beanstalk emetterà un messaggio sulla console indicando quale dei file di dipendenza è stato utilizzato durante una implementazione.

La seguente procedura descrive la logica seguita da Elastic Beanstalk per installare le dipendenze durante l'implementazione di un'istanza.

  • Se è presente un file requirements.txt, usiamo il comando pip install -r requirements.txt.

  • A partire dalla versione della piattaforma Amazon Linux 2 del 7 marzo 2023, se non è presente alcun file requirements.txt ma ce n'è uno Pipfile.lock, utilizziamo il comando pipenv sync. Prima di quella versione, usavamo pipenv install --ignore-pipfile.

  • Se non c'è né un file requirements.txt né un Pipfile.lock, ma è presente un Pipfile, usiamo il comando pipenv install --skip-lock.

  • Se non viene trovato nessuno dei tre file dei requisiti, non installiamo alcuna dipendenza dall'applicazione.