Menentukan dependensi menggunakan file persyaratan - AWS Elastic Beanstalk

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menentukan dependensi menggunakan file persyaratan

Aplikasi Python tipikal memiliki dependensi pada paket Python pihak ketiga lainnya. Dengan platform Python Elastic Beanstalk, Anda memiliki beberapa cara untuk menentukan paket Python tempat aplikasi Anda bergantung.

Gunakan pip dan requirements.txt

Alat standar untuk memasang paket Python adalah pip. Alat ini memiliki fitur yang memungkinkan Anda untuk menentukan semua paket yang Anda butuhkan (dan juga versinya) dalam satu file persyaratan. Untuk informasi selengkapnya tentang file persyaratan, lihat Format File Persyaratan di situs web dokumentasi pip.

Buat file bernama requirements.txt dan letakkan di direktori tingkat atas dari paket sumber Anda. Berikut ini adalah contoh file requirements.txt untuk Django.

Django==2.2 mysqlclient==2.0.3

Di lingkungan pengembangan, Anda dapat menggunakan perintah pip freeze untuk menghasilkan file persyaratan Anda.

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

Untuk memastikan bahwa file persyaratan Anda hanya berisi paket yang benar-benar digunakan oleh aplikasi Anda, gunakan lingkungan virtual yang hanya menginstal paket tersebut. Di luar lingkungan virtual, output dari pip freeze akan menyertakan semua paket pip yang diinstal pada mesin pengembangan Anda, termasuk yang disertakan pada sistem operasi Anda.

catatan

Pada versi platform Python Amazon Linux AMI, Elastic Beanstalk aslinya tidak mendukung Pipenv atau Pipfiles. Jika Anda menggunakan Pipenv untuk mengelola dependensi aplikasi Anda, jalankan perintah berikut untuk menghasilkan file requirements.txt.

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

Untuk mempelajari selengkapnya, lihat Menghasilkan requirements.txt dalam dokumentasi Pipenv.

Gunakan Pipenv dan Pipfile

Pipenv adalah alat pengemasan Python modern. Alat tersebut mengombinasikan instalasi paket dengan pembuatan dan pengelolaan file dependensi dan virtualenv untuk aplikasi Anda. Untuk informasi lebih lanjut, lihat Pipenv: Alur Kerja Python Dev untuk Manusia.

Pipenv memelihara dua file:

  • Pipfile- File ini berisi berbagai jenis dependensi dan persyaratan.

  • Pipfile.lock- File ini berisi snapshot versi yang memungkinkan build deterministik.

Anda dapat membuat file-file ini di lingkungan pengembangan Anda dan memasukkannya ke direktori tingkat atas bundel sumber yang Anda terapkan ke Elastic Beanstalk. Untuk informasi selengkapnya tentang dua file ini, lihat Contoh Pipfile dan PipFile.lock.

Contoh berikut menggunakan Pipenv untuk menginstal Django dan kerangka kerja REST Django. Perintah ini membuat file Pipfile dan Pipfile.lock.

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

Precedence

Jika Anda menyertakan lebih dari satu file persyaratan yang dijelaskan dalam topik ini, Elastic Beanstalk hanya menggunakan salah satunya. Daftar berikut menunjukkan yang diutamakan, dalam urutan menurun.

  1. requirements.txt

  2. Pipfile.lock

  3. Pipfile

catatan

Dimulai dengan rilis platform Amazon Linux 2 7 Maret 2023, jika Anda menyediakan lebih dari satu file ini, Elastic Beanstalk akan mengeluarkan pesan konsol yang menyatakan file dependensi mana yang digunakan selama penerapan.

Langkah-langkah berikut menjelaskan logika yang diikuti Elastic Beanstalk untuk menginstal dependensi saat menerapkan instance.

  • Jika ada requirements.txt file, kami menggunakan perintahpip install -r requirements.txt.

  • Dimulai dengan rilis platform 7 Maret 2023 Amazon Linux 2, jika tidak ada requirements.txt file, tetapi adaPipfile.lock, kami menggunakan perintahpipenv sync. Sebelum rilis itu, kami menggunakanpipenv install --ignore-pipfile.

  • Jika tidak ada requirements.txt file atau aPipfile.lock, tapi adaPipfile, kita menggunakan perintahpipenv install --skip-lock.

  • Jika tidak ada dari tiga file persyaratan yang ditemukan, kami tidak menginstal dependensi aplikasi apa pun.