pip adalah package installer resmi Python dan telah dibundel bersama installer Python sejak versi 3.4. pip bertugas satu: mencari distribution di PyPI, memasangnya beserta seluruh pohon dependency-nya ke site-packages, lalu mencatat apa saja yang sudah terpasang. Pada chapter ini kita akan mempraktikkan siklus lengkapnya: install, periksa, upgrade, hapus, dan mendokumentasikan hasilnya.

Semua perintah pada chapter ini dijalankan di terminal. Idealnya perintah dijalankan di dalam virtual environment agar package tidak mencemari instalasi Python global — cara membuatnya dibahas pada Chapter Membuat Virtual Environment.

Menginstal Package #

Perintah dasarnya adalah pip install diikuti distribution name. Berikut hasil nyata memasang package build (alat untuk membangun package Python yang akan kita pakai pada chapter akhir section ini):

bash
pip install build

Output yang Dihasilkan:

text
Collecting build
  Using cached build-1.6.1-py3-none-any.whl.metadata (5.6 kB)
Collecting packaging>=24.0 (from build)
  Using cached packaging-26.3-py3-none-any.whl.metadata (3.5 kB)
Collecting pyproject_hooks (from build)
  Using cached pyproject_hooks-1.3.3-py3-none-any.whl.metadata (1.3 kB)
Using cached build-1.6.1-py3-none-any.whl (31 kB)
Using cached packaging-26.3-py3-none-any.whl (129 kB)
Using cached pyproject_hooks-1.3.3-py3-none-any.whl (10 kB)
Installing collected packages: pyproject_hooks, packaging, build
Successfully installed build-1.6.1 packaging-26.3 pyproject_hooks-1.3.3

Mari kita baca transkrip tersebut baris per baris:

  1. Collecting build: pip mencari distribution bernama build di PyPI dan menemukan versi 1.6.1.
  2. Collecting packaging>=24.0 (from build): metadata build menyatakan dependency packaging>=24.0, jadi pip menelusurinya juga. Baris berikutnya menelusuri pyproject_hooks. Inilah resolusi pohon dependency dari Chapter Memahami Python Packages.
  3. Using cached ...: pip memakai salinan arsip dari cache lokal. Pada komputer yang cache-nya kosong, baris ini tampil sebagai Downloading ....
  4. Installing collected packages: ...: pip memasang ketiga package sekaligus, disusun dari dependency paling dasar.
  5. Successfully installed build-1.6.1 ...: daftar package yang berhasil terpasang beserta versinya.

Memeriksa dan Menghapus Package #

Setelah instalasi, ada tiga perintah yang paling sering dipakai. pip list menampilkan seluruh package terpasang di environment aktif:

bash
pip list

Output yang Dihasilkan:

text
Package         Version
--------------- -------
build           1.6.1
packaging       26.3
pip             25.0.1
pyproject_hooks 1.3.3

pip show menampilkan metadata satu package, termasuk daftar dependency-nya pada baris Requires:

bash
pip show build

Output yang Dihasilkan (jalur pada Location akan berbeda di komputer Anda):

text
Name: build
Version: 1.6.1
Summary: A simple, correct Python build frontend
Home-page: https://build.pypa.io
Author: 
Author-email: Filipe Laíns <[email protected]>, Bernát Gábor <[email protected]>, layday <[email protected]>, Henry Schreiner <[email protected]>
License-Expression: MIT
Location: /home/budi/proyek-toko/.venv/lib/python3.12/site-packages
Requires: packaging, pyproject_hooks
Required-by: 

Perintah pip uninstall menghapus package. Opsi -y melewati pertanyaan konfirmasi:

bash
pip uninstall -y packaging

Output yang Dihasilkan:

text
Found existing installation: packaging 26.3
Uninstalling packaging-26.3:
  Successfully uninstalled packaging-26.3

Perhatikan bahwa pip hanya menghapus packaging, bukan build yang bergantung padanya. pip tidak menelusuri dependency terbalik secara otomatis; jika build kemudian rusak karena kehilangan dependency-nya, kitalah yang harus memasang ulang versi yang cocok.

Memasang Versi Tertentu dan Upgrade #

Versi tertentu bisa kita minta langsung dengan version specifier dalam tanda kutip:

bash
pip install "packaging==24.0"

Output yang Dihasilkan:

text
Collecting packaging==24.0
  Using cached packaging-24.0-py3-none-any.whl.metadata (3.2 kB)
Using cached packaging-24.0-py3-none-any.whl (53 kB)
Installing collected packages: packaging
Successfully installed packaging-24.0

Perintah pip install --upgrade memperbarui package ke versi terbaru yang cocok:

bash
pip install --upgrade packaging

Output yang Dihasilkan:

text
Requirement already satisfied: packaging in ./.venv/lib/python3.12/site-packages (24.0)
Collecting packaging
  Using cached packaging-26.3-py3-none-any.whl.metadata (3.5 kB)
Using cached packaging-26.3-py3-none-any.whl (129 kB)
Installing collected packages: packaging
  Attempting uninstall: packaging
    Found existing installation: packaging 24.0
    Uninstalling packaging-24.0:
      Successfully uninstalled packaging-24.0
Successfully installed packaging-26.3

Transkrip di atas memperlihatkan mekanisme upgrade: pip mencatat versi lama 24.0 sudah terpasang, menghapusnya (Attempting uninstall), lalu memasang versi baru 26.3. Operator penentu versi yang dikenal pip dirangkum pada tabel berikut — semantic versioning di baliknya dibedah tuntas pada Chapter Dependency Pinning.

SpecifierArtiCocok untuk 2.32.5?
==2.32.5tepat versi iniya
>=2.31versi 2.31 ke atasya
<=2.32versi 2.32 ke bawahtidak
~=2.32>=2.32, tetapi masih 2.xya
!=2.32.5apa pun kecuali versi initidak
==2.32.*seluruh rilis 2.32.xya

Terakhir, pip freeze mencetak seluruh package terpasang dalam format nama==versi — bahan baku file requirements.txt yang dibahas pada Chapter requirements.txt:

text
build==1.6.1
packaging==26.3
pyproject_hooks==1.3.3