Episode ini membawa kalian dari script menjadi project terstruktur: membuat package, menulis setup.cfg atau pyproject.toml minimal, memakai pip install -e untuk pengembangan, dan menjalankan workflow virtual environment yang benar.

Sampai di sini kalian menulis script tunggal. Episode 7 mengubah itu: kita membangun package yang terstruktur, mendeklarasikan metadata dengan pyproject.toml, dan menginstall package dalam mode editable untuk pengembangan.
Virtual environment yang kita bangun di episode 0 kini mendapat peran penuh. Setelah episode ini, project kalian akan punya fondasi yang sama seperti library profesional — siap untuk dependency management di episode 8 dan publikasi di episode 19.
Package adalah direktori berisi __init__.py. Struktur standar project Python:
belajar_kalkulator/
belajar_kalkulator/
__init__.py
aritmetika.py
pyproject.toml
README.mdDirektori luar belajar_kalkulator adalah root project, dan direktori dalam adalah package. File __init__.py menandai direktori sebagai package. Mari buat:
mkdir belajar_kalkulator
cd belajar_kalkulator
mkdir belajar_kalkulator
touch belajar_kalkulator/__init__.pyPerintah mkdir belajar_kalkulator membuat direktori project, lalu mkdir belajar_kalkulator membuat direktori package di dalamnya. touch __init__.py membuat file penanda package.
Isi package dengan modul dan ekspor fungsi melalui __init__.py:
def tambah(a, b):
return a + b
def kurang(a, b):
return a - b
def kali(a, b):
return a * bFile aritmetika.py berisi fungsi-fungsi murni. Agar bisa diimpor sebagai from belajar_kalkulator import tambah, ekspor di __init__.py:
from belajar_kalkulator.aritmetika import tambah, kurang, kali
__all__ = ["tambah", "kurang", "kali"]__all__ mendefinisikan apa yang diekspor saat from belajar_kalkulator import *. Dengan struktur ini, package sudah bisa dipakai secara lokal.
pyproject.toml adalah format standar metadata project Python (PEP 621). Berikut versi minimalnya:
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
[project]
name = "belajar-kalkulator"
version = "0.1.0"
description = "Package kalkulator untuk belajar Python"
requires-python = ">=3.12"Bagian [project] mendeklarasikan nama, versi, dan deskripsi package. build-backend menentukan alat pembangun. requires-python memberi tahu versi Python minimum yang dibutuhkan.
Sebelum pyproject.toml populer, setup.cfg adalah pilihan utama:
[metadata]
name = belajar-kalkulator
version = 0.1.0
description = Package kalkulator untuk belajar Python
[options]
packages = find:Bentuk setup.cfg juga valid. Namun pyproject.toml kini menjadi standar dan akan kita perdalam di episode 19. Untuk series ini, kita fokus pada pyproject.toml.
Mode editable menginstall package sehingga perubahan kode langsung terlihat tanpa install ulang:
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -e .pip install -e . menginstall package dari direktori saat ini dalam mode editable. Tanda -e berarti perubahan pada kode kalian langsung dipakai tanpa proses install ulang — sangat ideal untuk pengembangan.
Uji bahwa package terinstall dengan benar:
python3 -c "from belajar_kalkulator import tambah; print(tambah(3, 4))"Perintah python3 -c "from belajar_kalkulator import tambah" mengimpor package dan memanggil fungsi. Output 7 menandakan package berhasil terinstall. Dari mana pun kalian berada di dalam venv, package ini bisa diimpor.
Virtual environment mengisolasi dependency setiap project. Tanpa itu, install package ke system Python bisa merusak environment lain. Aturan utamanya:
Seiring project tumbuh, dependency harus dicatat. Tambahkan ke pyproject.toml:
[project]
name = "belajar-kalkulator"
version = "0.1.0"
description = "Package kalkulator untuk belajar Python"
requires-python = ">=3.12"
dependencies = [
"pytest>=8.0"
]Menulis dependency di dependencies = [...] membuatnya terinstall otomatis saat pip install -e .. Ini menggantikan instalasi manual satu per satu dan menjadi dasar reproducible environment di episode 8.
Satu kebiasaan wajib: periksa environment aktif sebelum menjalankan Python. Jalankan which python3 — output harus menunjuk ke .venv/bin/python3. Jika tidak, aktifkan venv dulu. Konsistensi ini akan menyelamatkan kalian dari banyak bug dependency.
Inti yang harus dibawa pulang:
Di episode 8 selanjutnya kita akan membahas dependency management dan reproducible environments — perbandingan requirements.txt dan pyproject.toml, Poetry dan Flit, lockfiles dengan pip-tools, pipx untuk CLI tools, dan best practice virtualenv. Project kalian akan menjadi benar-benar reproducible!