Lewati ke konten utama

Variabel Lingkungan Python: Hal yang Perlu Anda Ketahui

Pelajari seluk-beluk mengelola variabel lingkungan Python dengan pustaka os dan python-dotenv.
Diperbarui 28 Sep 2026  · 9 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Variabel lingkungan adalah mekanisme yang kuat untuk menyimpan detail konfigurasi proyek pengembangan Anda secara fleksibel dan aman. Variabel ini menyimpan pasangan kunci-nilai yang dapat diakses oleh bahasa pemrograman seperti Python dan menjaga informasi tersebut tetap tersembunyi dari pihak yang tidak berwenang. Dalam tutorial ini, Anda akan mempelajari konsep dan teknik penting untuk membuat dan mengelola variabel lingkungan di Python.

Apa Itu Variabel Lingkungan?

Variabel lingkungan adalah pasangan nama-nilai yang disimpan di tempat yang aman di sistem operasi Anda. Umumnya, bentuknya seperti ini:

API_KEY=1akn4nka-aqwej3

Di Python, Anda dapat menggunakan variabel seperti ini untuk menyimpan informasi sensitif yang terkait dengan proyek pengembangan Anda. Informasi sensitif dapat berupa:

  • Kunci API untuk mengakses aplikasi pihak lain
  • Nama pengguna dan kata sandi untuk masuk ke aplikasi melalui skrip
  • Kredensial basis data
  • apa pun yang dapat menimbulkan masalah keamanan jika tidak sengaja terekspos.

Sebagai contoh, jika Anda menulis skrip Python yang secara terbuka menggunakan kredensial AWS Anda dan tanpa sengaja meng-commit skrip tersebut ke GitHub, ada kemungkinan pihak jahat menemukannya dan secara signifikan meningkatkan tagihan AWS Anda (ini bukan hal yang jarang terjadi).

Manfaat lain dari variabel lingkungan adalah keterkonfigurasian. Anda dapat dengan mudah menyesuaikan pengaturan (URL basis data, path file) dengan mengubah variabel lingkungan tanpa mengubah kode Anda. Fitur ini sangat membantu jika Anda menggunakan pengaturan yang sama di banyak bagian proyek.

Jadi, mari kita pelajari cara menggunakannya di Python.

Cara Mengambil Variabel Lingkungan di Modul os Python

Untuk mengambil variabel lingkungan yang sudah ada di sistem Anda, Anda dapat menggunakan modul os. Modul ini memiliki fungsi .getenv untuk mengambil variabel:

import os
os.getenv("USER")
'bexgboost'

Di atas, saya mengambil nama pengguna sistem, yang tersedia di semua sistem. Ada banyak variabel lain seperti path home:

os.getenv("HOME")
'/home/bexgboost'

Atau path ke executable Conda Anda:

os.getenv("CONDA_EXE")
'/home/bexgboost/anaconda3/bin/conda'

Jadi, saat Anda menjalankan perintah conda, itulah cara terminal mengetahui aplikasi mana yang harus dijalankan.

Namun, apa yang terjadi jika Anda mencoba mengambil variabel yang tidak ada:

os.getenv("MYDATABASE")

Fungsi .getenv() tidak mengembalikan apa pun, tetapi kita dapat mengubah perilaku itu. Anda dapat menggunakan parameter default untuk mengembalikan nilai kustom jika variabel tidak ada:

os.getenv("COMPUTER_PASSWORD", default="Nope!")
'Nope!'

Fungsi .getenv() adalah metode terbaik untuk mengambil variabel yang sudah ada.

Namun, di sumber lain, Anda mungkin melihat metode berbeda seperti atribut .environ, yang mengembalikan kamus berisi semua variabel lingkungan:

current_directory = os.environ.get("PWD", None)
current_directory
'/home/bexgboost/articles/2024/4_april'

Karena ini adalah kamus, Anda dapat menggunakan notasi kurung (tidak direkomendasikan) atau fungsi .get() untuk mengambil nilai.

os juga memiliki akses ke mungkin variabel sistem terpenting bernama PATH. PATH menyimpan path absolut ke semua executable yang terpasang di sistem Anda, sehingga biasanya sangat panjang:

os.getenv("PATH")[:46]
'/home/bexgboost/.local/bin:/home/bexgboost/bin'

Setiap path di PATH dipisahkan oleh tanda titik dua. Mari hitung panjang PATH di sistem saya:

def count_path_items():
   items = os.getenv("PATH").split(":")

   return len(items)

count_path_items()
79

79! Lumayan.

Menggunakan Pustaka python-dotenv untuk Mengelola Variabel Lingkungan di Python Secara Efektif

Menetapkan variabel lingkungan kustom

Sekarang setelah kita tahu cara mengambil variabel yang sudah ada, mari kita lihat cara menetapkan variabel kustom. Metode pertama adalah menggunakan kamus os.environ:

# Create a new environment variable
os.environ["NEW_VARIABLE"] = "42"  # Always expects a string value

os.getenv("NEW_VARIABLE")
'42'

Namun, metode ini kurang berguna karena semua variabel baru akan hilang setelah sesi saat ini berakhir.

Untungnya, ada metode yang lebih tahan lama untuk menyimpan variabel lingkungan dengan menggunakan file .env (dibaca dot-env). File-file ini memiliki sintaks yang sama, yang berarti akan berfungsi di sistem operasi apa pun. Berikut contoh tampilan file .env:

CUSTOM_API_LINK=https://myapi.com/v1/api
SNOWFLAKE_USERNAME=bexgboost
MYSQL_DATABASE_PASSWORD=as3ndf03

Untuk saat ini, file tersebut hanya mendefinisikan tiga variabel. Untuk membaca file ini dan mengekstrak isinya, kita akan menggunakan pustaka bernama python-dotenv:

$ pip install python-dotenv

Lalu, di skrip Python atau Jupyter Notebook kita akan mengimpor fungsi load_dotenv dan memanggilnya:

from dotenv import load_dotenv

load_dotenv()
True

Jika tidak dapat menemukan file .env di direktori saat ini, fungsi ini akan mencari di semua direktori induk dan mengembalikan True jika ditemukan.

Saya menyimpan file .env di atas di direktori home saya ~/.env; itulah sebabnya load_dotenv dapat menemukannya.

Untuk membuat file Anda sendiri, Anda dapat menggunakan perintah touch di terminal atau menggunakan editor teks seperti VSCode:

$ touch ~/.env

Sintaks file .env cukup fleksibel. Misalnya, Anda dapat menetapkan variabel dengan nilai multi-baris (harus menggunakan tanda kutip):

LONG_ENV="This is an environment
variable with a long message"

Gunakan karakter escape:

LONG_ENV="This value uses an \"escape character"

Anda juga dapat menambahkan komentar ke file untuk referensi di masa mendatang:

# You can also add comments anywhere with a hashtag
CUSTOM_API_LINK=https://myapi.com/v1/api
SNOWFLAKE_USERNAME=bexgboost
MYSQL_DATABASE_PASSWORD=as3ndf03

Anda juga bisa menggunakan nilai dari satu variabel di dalam variabel lain menggunakan sintaks ${VAR_NAME}:

FIRST_NAME=John
LAST_NAME=Doe
FULL_NAME="I am ${FIRST_NAME} ${LAST_NAME}"

Mengambil variabel lingkungan kustom dengan python-dotenv

Mengambil variabel kustom sama seperti sebelumnya - cukup gunakan modul os:

import os

os.getenv("CUSTOM_API_LINK")
'https://myapi.com/v1/api'
os.getenv("SNOWFLAKE_USERNAME")
'bexgboost'

Pastikan Anda memanggil load_dotenv terlebih dahulu.

Jika file .env Anda berada di lokasi yang tidak dapat dijangkau oleh load_dotenv, Anda dapat memberikan path langsung seperti di bawah ini:

load_dotenv("/home/bexgboost/somewhere/unreachable/.env")
True

Bekerja dengan file .env di Jupyter

Setelah Anda memasang Python-dotenv, Anda tidak perlu mengimpornya ke Python jika menggunakan Jupyter. Pustaka ini dilengkapi metode magic Jupyter yang memuatnya secara otomatis:

# Run this anywhere in the notebook to load EVs from .env
%load_ext dotenv
%dotenv

Lalu, Anda dapat menggunakan modul os lagi:

import os

os.getenv("SNOWFLAKE_USERNAME")
'bexgboost'

Praktik Terbaik Menggunakan Variabel Lingkungan di Python

Di bagian ini, kita akan mencantumkan beberapa praktik terbaik untuk memastikan variabel lingkungan tetap aman dan sepenuhnya dapat digunakan.

1. Selalu tambahkan file .env ke .gitignore agar Anda tidak secara tidak sengaja meng-commit-nya ke GitHub.

# Create .gitignore if it doesn't exist
$ touch .gitignore
$ echo ".env" >> .gitignore

2. Saat mendefinisikan variabel gunakan nama yang deskriptif dan seluruhnya HURUF BESAR.

# Good
DEBUG=True
LOGGING_VERBOSITY=3

# Bad
debug=True
LV=3

3. Buat satu file .env untuk menyimpan variabel tingkat sistem yang Anda perlukan di setiap proyek.

$ touch ~/.env

4. Kendalikan cakupan file .env Anda. Buat file terpisah untuk berbagai bagian alur kerja pengembangan seperti di bawah ini:

$ touch development/.env.development
$ touch testing/.env.testing
$ touch production/.env.production

Fungsi load_dotenv akan mengenalinya.

Jika Anda membuat beberapa file .env dengan nama berbeda, ubah file .gitignore Anda agar semuanya dikecualikan dari pengindeksan git:

# Pay attention to the asterisk *
$ echo ".env*" >> .gitignore

Kesimpulan

Dalam artikel ini, kita telah mempelajari seluruh konsep dan teknik penting untuk mengelola variabel lingkungan di Python secara efektif. Kita mengetahui cara mengambil variabel yang ada dengan modul OS Python dan cara membuat nilai kustom dengan pustaka python-dotenv. Kita juga mempelajari cara menulis file .env yang sesuai dengan praktik terbaik.

Jika Anda ingin mempelajari lebih lanjut tentang rekayasa perangkat lunak di Python, lihat kursus kami, Software Engineering Principles in Python.

Anda juga dapat melihat Python Programming Skill Track kami, yang akan membawa Anda dari tingkat pemula hingga mahir dengan latihan dan proyek langsung.


Bexruz (Bex) Tuychiev's photo
Author
Bexruz (Bex) Tuychiev
LinkedIn

Saya adalah kreator konten data science dengan pengalaman lebih dari 2 tahun dan salah satu dengan jumlah pengikut terbesar di Medium. Saya suka menulis artikel mendalam tentang AI dan ML dengan sedikit gaya sarkastik—karena harus ada sesuatu untuk membuatnya tidak terlalu membosankan. Saya telah menghasilkan lebih dari 130 artikel dan satu kursus di DataCamp, dengan satu lagi sedang dalam proses. Konten saya telah dilihat oleh lebih dari 5 juta pasang mata, dan 20 ribu di antaranya menjadi pengikut di Medium dan LinkedIn. 

Topik
Python

Lanjutkan Perjalanan Python Anda Hari Ini!

Kursus

Prinsip Rekayasa Perangkat Lunak di Python

4 jam
71K
Pelajari modularitas, dokumentasi, dan pengujian otomatis untuk selesaikan masalah ilmu data dengan lebih cepat dan andal.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya