Panduan ini untuk siapa
- Pembelajar yang sudah memakai virtual environment dan ingin workflow dependency yang andal
- Developer yang membandingkan
pip, Poetry, PDM,uv, Hatch, Rye, dan setup berbasis Conda - Tim yang membutuhkan instalasi reproducible di laptop, CI, dan production
Apa yang akan Anda pelajari
- Peran package manager dan lock file dalam project Python
- Kapan memakai
pip+requirements.txtversus workflow modernpyproject.toml - Kekuatan Poetry, PDM,
uv, Hatch, Rye, dan Conda/Miniconda - Bagaimana PyPI dan dependency resolution masuk ke lifecycle project nyata
- Panduan keputusan praktis untuk memilih tool berdasarkan konteks project
Mengapa topik ini penting
Begitu project Anda memakai library pihak ketiga, manajemen paket menjadi kritis. Manajemen dependency yang buruk memicu bug “works on my machine”, build rusak, dan onboarding yang menyulitkan untuk kontributor baru.
Tooling Python modern memberi banyak opsi, yang kuat namun membingungkan. Panduan ini membantu Anda memilih setup secara sadar agar environment tetap reproducible, upgrade lebih aman, dan kolaborasi lebih mulus.
Konsep inti
Peran package manager dan file inti
Package manager menyelesaikan tiga masalah utama:
- Menginstal dependency
- Menyelesaikan kompatibilitas versi
- Mereproduksi environment di lain waktu
Pola file umum:
requirements.txt: daftar dependency biasa (sering dengan versi yang dipin)pyproject.toml: metadata project modern + dependency- Lock file (
poetry.lock,pdm.lock,uv.lock): graph dependency hasil resolusi secara presisi
PyPI (Python Package Index) adalah registry paket publik default yang dipakai sebagian besar tool Python. Saat Anda menjalankan pip install requests, paket biasanya diambil dari PyPI kecuali Anda mengonfigurasi index lain.
python -m pip index versions requests
Perintah ini membantu Anda melihat versi yang tersedia dan dipublikasikan di PyPI.
Contoh minimal requirements.txt:
requests==2.32.3
pandas==2.2.3
Contoh fragmen minimal pyproject.toml:
[project]
name = "my-app"
version = "0.1.0"
dependencies = [
"requests>=2.32.0",
"pandas>=2.2.0"
]
Gambaran ekosistem tool
Setiap tool mengoptimalkan workflow yang sedikit berbeda:
pip: baseline universal, sederhana, dan tersedia luas- Poetry: dependency management + packaging dengan workflow lock-first
- PDM: workflow modern ramah PEP berpusat pada
pyproject.toml uv: installer/resolver dependency sangat cepat serta workflow environment modern- Hatch: fokus pada automation environment dan project
- Rye: workflow project opinionated (status ekosistem dapat berubah)
- Conda/Miniconda: kuat untuk scientific stack dan dependency binary non-Python
Tidak ada satu tool yang selalu terbaik. Pilih berdasarkan kebutuhan tim, constraint CI, dan domain.
Memilih strategi yang tepat
Gunakan shortcut praktis ini:
- Script solo atau automation kecil ->
venv+pip+requirements.txt - App/service standar dengan kebutuhan packaging -> Poetry atau PDM
- Instalasi sensitif performa / workflow modern -> pertimbangkan
uv - Data science stack dengan dependency terkompilasi -> Conda/Miniconda sering lebih mudah
Apa pun yang Anda pilih, pegang aturan ini:
- Pin atau lock dependency
- Commit file dependency ke version control
- Gunakan CI untuk memverifikasi instalasi reproducible
Decision flow (versi teks cepat):
Do you need scientific/non-Python binaries?
├─ Yes -> Conda/Miniconda
└─ No
├─ Need minimal/simple workflow? -> pip + requirements.txt
├─ Need lock-first project management? -> Poetry or PDM
└─ Need very fast installs/resolution? -> uv
Panduan langkah demi langkah
Langkah 1 — Mulai dari workflow baseline pip
Buat dan aktifkan virtual environment terlebih dahulu, lalu instal package.
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install requests pandas
python -m pip freeze > requirements.txt
Di Windows PowerShell, aktifkan dengan:
.venv\Scripts\Activate.ps1
Baseline ini berjalan di mana pun dan merupakan fondasi yang kuat.
Langkah 2 — Coba workflow pyproject.toml-first
Jika Anda ingin metadata modern + locking, coba satu tool (misalnya Poetry).
poetry init
poetry add requests pandas
poetry install
Anda akan mendapatkan:
pyproject.tomluntuk metadata project/deklarasi dependencypoetry.lockuntuk instalasi reproducible
Alur setara juga tersedia di ekosistem PDM dan uv.
Langkah 3 — Validasi reproducibility dari environment bersih
Hapus lalu buat ulang environment, lalu instal kembali dari file dependency.
Untuk alur pip:
python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
Untuk alur Poetry:
poetry install
Jika keduanya bisa berjalan berulang di setup baru, manajemen dependency Anda sehat.
Contoh praktis
Contoh 1 — Bandingkan workflow instalasi dengan cepat
Gunakan perbandingan berdampingan ini untuk memahami artifact output.
Gaya pip:
python -m pip install fastapi uvicorn
python -m pip freeze > requirements.txt
Expected artifact:
requirements.txt
Gaya Poetry:
poetry add fastapi uvicorn
Expected artifacts:
pyproject.toml
poetry.lock
Gaya PDM:
pdm add fastapi uvicorn
Expected artifacts:
pyproject.toml
pdm.lock
Keduanya valid. Kunci utamanya adalah konsistensi dalam satu project.
Contoh 2 — Decision flow minimal dalam praktik
Bayangkan tiga skenario project:
Scenario A: single automation script -> pip + requirements.txt
Scenario B: API service with team contributors -> Poetry/PDM + lock file
Scenario C: ML environment with heavy compiled packages -> Conda
Expected result:
- Onboarding lebih cepat karena tooling eksplisit
- Konflik versi lebih sedikit antar mesin
- Pipeline CI lebih bersih dengan instalasi deterministik
Kesalahan umum dan cara menghindarinya
- Mencampur banyak package manager dalam satu project tanpa aturan -> Standarisasi satu workflow utama per repository.
- Tidak meng-commit lock/dependency file -> Commit
requirements.txtatau lock file agar rekan tim bisa mereproduksi instalasi. - Memakai versi luas yang tidak dipin secara ceroboh -> Pin versi presisi atau pertahankan range versi terkontrol.
- Menginstal global alih-alih di virtual environment -> Selalu aktifkan
.venvproject sebelum instalasi. - Pindah tool di tengah project tanpa rencana migrasi -> Dokumentasikan langkah migrasi dan verifikasi CI sebelum merge.
Latihan cepat
- Buat sample project menggunakan
pip+requirements.txt, lalu bangun ulang dari nol pada virtual environment bersih. - Buat sample project kedua memakai Poetry atau PDM dan bandingkan file yang dihasilkan.
- Tulis catatan keputusan singkat: tool mana yang akan dipakai pada project berikutnya dan alasannya.
Ringkasan utama
- Manajemen dependency adalah praktik engineering inti, bukan sekadar setup.
piptetap baseline yang solid; tool modern menambah metadata project dan workflow locking yang lebih kuat.pyproject.tomlkini menjadi pusat konfigurasi project Python modern.- Reproducibility bergantung pada file yang jelas, pilihan tool yang konsisten, dan clean install yang bisa diulang.
Langkah berikutnya
Lanjut ke [09. Paket Python yang Umum & Berguna](./09-common-and-useful-python-packages-ID.md). Di panduan berikutnya, Anda akan mengeksplorasi library praktis dari standard library dan ekosistem pihak ketiga untuk HTTP, path, dan workflow data.
No Comments