Python

Panduan Belajar Python: Manajemen Paket Python & Ekosistem

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.txt versus workflow modern pyproject.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.toml untuk metadata project/deklarasi dependency
  • poetry.lock untuk 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.txt atau 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 .venv project 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.
  • pip tetap baseline yang solid; tool modern menambah metadata project dan workflow locking yang lebih kuat.
  • pyproject.toml kini 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

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.