Python-dotenv membaca pasangan nilai kunci dari file .env
dan dapat mengaturnya sebagai variabel lingkungan. Ini membantu dalam pengembangan aplikasi mengikuti prinsip 12 faktor.
pip install python-dotenv
Jika aplikasi Anda mengambil konfigurasinya dari variabel lingkungan, seperti aplikasi 12 faktor, meluncurkannya dalam pengembangan tidak terlalu praktis karena Anda harus mengatur sendiri variabel lingkungan tersebut.
Untuk membantu Anda dalam hal tersebut, Anda dapat menambahkan Python-dotenv ke aplikasi Anda untuk membuatnya memuat konfigurasi dari file .env
ketika ada (misalnya dalam pengembangan) namun tetap dapat dikonfigurasi melalui lingkungan:
from dotenv import load_dotenv
load_dotenv () # take environment variables
# Code of your application, which uses environment variables (e.g. from `os.environ` or
# `os.getenv`) as if they came from the actual environment.
Secara default, load_dotenv
tidak mengesampingkan variabel lingkungan yang ada dan mencari file .env
di direktori yang sama dengan skrip python atau mencarinya secara bertahap di tingkat yang lebih tinggi.
Untuk mengonfigurasi lingkungan pengembangan, tambahkan .env
di direktori root proyek Anda:
.
├── .env
└── foo.py
Sintaks file .env
yang didukung oleh python-dotenv mirip dengan Bash:
# Development settings
DOMAIN=example.org
ADMIN_EMAIL=admin@ ${DOMAIN}
ROOT_URL= ${DOMAIN} /app
Jika Anda menggunakan variabel dalam nilai, pastikan variabel tersebut dikelilingi dengan {
dan }
, seperti ${DOMAIN}
, karena variabel kosong seperti $DOMAIN
tidak diperluas.
Anda mungkin ingin menambahkan .env
ke .gitignore
Anda, terutama jika berisi rahasia seperti kata sandi.
Lihat bagian "Format file" di bawah untuk informasi lebih lanjut tentang apa yang dapat Anda tulis dalam file .env
.
Fungsi dotenv_values
bekerja kurang lebih dengan cara yang sama seperti load_dotenv
, kecuali fungsi tersebut tidak menyentuh lingkungan, fungsi tersebut hanya mengembalikan dict
dengan nilai yang diurai dari file .env
.
from dotenv import dotenv_values
config = dotenv_values ( ".env" ) # config = {"USER": "foo", "EMAIL": "[email protected]"}
Hal ini terutama memungkinkan manajemen konfigurasi tingkat lanjut:
import os
from dotenv import dotenv_values
config = {
** dotenv_values ( ".env.shared" ), # load shared development variables
** dotenv_values ( ".env.secret" ), # load sensitive variables
** os . environ , # override loaded values with environment variables
}
load_dotenv
dan dotenv_values
menerima aliran melalui argumen stream
. Dengan demikian dimungkinkan untuk memuat variabel dari sumber selain sistem file (misalnya jaringan).
from io import StringIO
from dotenv import load_dotenv
config = StringIO ( "USER=foo n [email protected]" )
load_dotenv ( stream = config )
Anda dapat menggunakan dotenv di IPython. Secara default, ia akan menggunakan find_dotenv
untuk mencari file .env
:
% load_ext dotenv
% dotenv
Anda juga dapat menentukan jalur:
% dotenv relative / or / absolute / path / to / . env
Bendera opsional:
-o
untuk mengganti variabel yang ada.-v
untuk meningkatkan verbositas. Antarmuka CLI dotenv
juga disertakan, yang membantu Anda memanipulasi file .env
tanpa membukanya secara manual.
$ pip install " python-dotenv[cli] "
$ dotenv set USER foo
$ dotenv set EMAIL [email protected]
$ dotenv list
USER=foo
[email protected]
$ dotenv list --format=json
{
" USER " : " foo " ,
" EMAIL " : " [email protected] "
}
$ dotenv run -- python foo.py
Jalankan dotenv --help
untuk informasi lebih lanjut tentang opsi dan subperintah.
Formatnya tidak ditentukan secara formal dan masih terus ditingkatkan seiring berjalannya waktu. Meskipun demikian, sebagian besar file .env
seharusnya terlihat seperti file Bash.
Kunci dapat tidak diberi tanda kutip atau diberi tanda kutip tunggal. Nilai dapat berupa tanda kutip tunggal, tanda kutip tunggal, atau tanda kutip ganda. Spasi sebelum dan sesudah kunci, tanda sama dengan, dan nilai diabaikan. Nilai dapat diikuti dengan komentar. Baris dapat dimulai dengan arahan export
, yang tidak mempengaruhi interpretasinya.
Urutan escape yang diperbolehkan:
\
, '
\
, '
, "
, a
, b
, f
, n
, r
, t
, v
Nilai yang diberi tanda kutip tunggal atau ganda dapat menjangkau beberapa baris. Contoh berikut ini setara:
FOO= " first line
second line "
FOO= " first linensecond line "
Variabel tidak boleh mempunyai nilai:
FOO
Hal ini mengakibatkan dotenv_values
mengasosiasikan nama variabel tersebut dengan nilai None
(misalnya {"FOO": None}
. load_dotenv
, sebaliknya, mengabaikan variabel tersebut.
Ini berbeda dengan FOO=
, dalam hal ini variabel dikaitkan dengan string kosong.
Python-dotenv dapat menginterpolasi variabel menggunakan ekspansi variabel POSIX.
Dengan load_dotenv(override=True)
atau dotenv_values()
, nilai variabel adalah nilai pertama yang ditentukan dalam daftar berikut:
.env
. Dengan load_dotenv(override=False)
, nilai variabel adalah nilai pertama yang ditentukan dalam daftar berikut:
.env
.Proyek ini saat ini dikelola oleh Saurabh Kumar dan Bertrand Bonnefoy-Claudet dan tidak akan mungkin terwujud tanpa dukungan dari orang-orang hebat ini.