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 pada Elastic Beanstalk
Topik ini menjelaskan cara mengkonfigurasi aplikasi Anda untuk menginstal paket Python lain yang diperlukan. Aplikasi Python tipikal memiliki dependensi pada paket Python pihak ketiga lainnya. Dengan platform Elastic Beanstalk Python, Anda memiliki beberapa cara untuk menentukan paket Python yang bergantung pada aplikasi Anda.
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
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
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 dalam direktori tingkat atas bundel sumber yang Anda gunakan 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.
-
requirements.txt
-
Pipfile.lock
-
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 salah satu 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 Amazon Linux 2 7 Maret 2023, 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
, tetapi adaPipfile
, kami menggunakan perintahpipenv install --skip-lock
. -
Jika tidak satu pun dari tiga file persyaratan ditemukan, kami tidak menginstal dependensi aplikasi apa pun.