Python hadir di hampir setiap instalasi Linux — alat instalasi distro pun sering ditulis dengannya. Tetapi “tersedia” belum berarti “siap untuk proyek”: interpreter sistem dikelola package manager, sedangkan proyek nyata butuh versi dan dependensi masing-masing. Pada Chapter ini kita membedakan Python sistem dari Python proyek, memakai pip secara sehat, mengisolasi dependensi lewat virtual environment, lalu mengenal pyenv untuk multi-versi.

Python yang Dibawa Sistem #

Di Debian, interpreter utama tinggal di /usr/bin/python3 dan versinya dikunci rilis distro — Debian 13 membawa Python 3.13. Mari periksa keadaan di mesin uji:

bash
which python3
python3 --version
python3 -c "import json; print(json.dumps({'nama': 'Budi'}))"
pip3 --version

Output yang Dihasilkan:

text
/usr/bin/python3
Python 3.13.5
{"nama": "Budi"}
pip 25.1.1 from /usr/lib/python3/dist-packages/pip (python 3.13)

Bedah hasilnya:

  1. which python3: lokasi interpreter — /usr/bin/python3 di mesin uji. Perintah python tanpa angka 3 tidak ada di Debian; package python-is-python3 menyediakannya sebagai symlink bila diperlukan.
  2. python3 --version: versi 3.13.5 — milik mesin uji dan mengikuti pembaruan distro, bukan pilihan bebas kita.
  3. python3 -c "...": menjalankan potongan kode tanpa file; modul bawaan seperti json langsung tersedia.
  4. pip3 --version: pengelola package dari PyPI (Python Package Index), dikemas Debian sebagai python3-pip.

Banyak komponen distro bergantung pada interpreter ini:

pip versus apt: Dua Semesta Package #

Pustaka Python bisa datang dari dua aliran: distro mengemasnya sebagai python3-nama-pustaka lewat apt, komunitas mempublikasikannya di PyPI lalu dipasang pip. Pertimbangan pilihannya:

Aspekapt install python3-requestspip install requests
Sumberrepository distroPyPI
Versidikunci rilis distrorilis upstream terbaru
Pembaruanmengikuti apt upgrademanual per proyek
Cakupanseluruh sistemlingkungan aktif (mis. venv)
Diverifikasi tim distroyatidak

Aturan praktisnya: kebutuhan sistem dilayani apt, dependensi proyek dipasang pip di dalam virtual environment — jangan mencampur keduanya di folder sistem. Berkebalikan dari compiler di Chapter sebelumnya, interpreter membaca source Python langsung tanpa “build”; yang dikelola adalah versi interpreter dan daftar pustakanya.

Skrip Python dan Baris Shebang #

Cara paling umum menjalankan kode Python tetap lewat file, dan baris pertamanya — shebang — menentukan interpreter yang membacanya:

bash
printf '#!/usr/bin/env python3\nprint("halo dari skrip Python")\n' > sapa.py
chmod +x sapa.py
./sapa.py
python3 sapa.py

Output yang Dihasilkan:

text
halo dari skrip Python
halo dari skrip Python

Bedah baris per barisnya:

  1. #!/usr/bin/env python3: meminta program env mencari python3 di PATH, bukan mematok /usr/bin/python3. Dampaknya besar: skrip ini memakai Python mana pun yang sedang “menang” di PATH — termasuk interpreter virtual environment, seperti akan kita lihat sebentar lagi.
  2. chmod +x sapa.py: memberi hak eksekusi, sama seperti skrip shell di Chapter Compilers dan Build Tools .
  3. ./sapa.py dan python3 sapa.py: dua cara menjalankan file yang sama — lewat shebang atau eksplisit; hasilnya identik.

Virtual Environment dengan venv #

Proyek A butuh requests 2.28, proyek B butuh 2.32 — memasang keduanya ke satu tempat pasti bentrok. Solusi standarnya adalah virtual environment: folder berisi pemasangan pustaka sendiri, dibuat oleh modul venv bawaan Python. Di Debian ada satu kejutan terkenal yang perlu kita alami sendiri:

bash
python3 -m venv .venv 2>&1

Output yang Dihasilkan:

text
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt install python3.13-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

Failing command: /home/budi/.venv/bin/python3

Pesan ini perilaku Debian yang disengaja, bukan kerusakan: mekanisme ensurepip (yang menyalin pip ke venv baru) dipisahkan ke package python3-venv — pada mesin uji belum terpasang. Sesudah sudo apt install python3-venv, perintah yang sama berhasil dan venv dibuat lengkap dengan pip. Selama itu belum terpasang kita masih bisa membuat venv tanpa pip — justru cocok untuk mengamati aktivasi yang murni urusan PATH:

bash
python3 -m venv --without-pip .venv
source .venv/bin/activate
which python3
printf 'import sys\nprint("paket di:", sys.prefix)\n' > cek.py
python3 cek.py
deactivate
which python3

Output yang Dihasilkan:

text
/home/budi/.venv/bin/python3
paket di: /home/budi/.venv
/usr/bin/python3

Bedah yang terjadi di balik layar:

  1. python3 -m venv --without-pip .venv: modul venv dijalankan lewat opsi -m. Folder .venv berisi bin/ (interpreter dan activate) serta lib/ untuk pustaka; interpreternya symlink tipis ke Python sistem — venv sangat ringan.
  2. source .venv/bin/activate: menjalankan script activate di shell saat ini. Isinya bukan sihir: meletakkan .venv/bin paling depan di PATH dan menyetel VIRTUAL_ENV — tanpa proses baru.
  3. which python3: buktinya — python3 kini menunjuk /home/budi/.venv/bin/python3, sehingga skrip ber-shebang env python3 ikut memakai interpreter venv (path output mengikuti folder mesin masing-masing).
  4. python3 cek.py: sys.prefix menunjuk .venv — pustaka venv dicari di sini, terpisah dari sistem.
  5. deactivate lalu which python3: mengembalikan PATH seperti semula — python3 kembali ke /usr/bin/python3.

Dalam venv lengkap, pip install nama-pustaka hanya menyentuh folder venv itu; daftannya dibekukan dengan pip freeze > requirements.txt dan dibangun ulang di komputer lain lewat pip install -r requirements.txt. Pola ini pula yang dipakai pipx untuk aplikasi CLI.

pyenv untuk Multi Versi #

Bila kebutuhannya menjalankan Python 3.11 dan 3.13 sekaligus, alat yang lazim adalah pyenv. Berbeda dari venv, pyenv memasang banyak interpreter di bawah ~/.pyenv/versions lalu menyusun shim — program kecil bernama python3 yang berdiri paling depan di PATH dan meneruskan pemanggilan ke versi terpilih. Sebagai contoh tampilan, daftar versi pada mesin developer biasanya tampak seperti ini:

text
* system (set by /home/budi/.pyenv/version)
  3.11.9
  3.12.4
  3.13.1

Tanda bintang menandai versi aktif — masih system — dan pyenv local 3.12.4 menuliskan pilihan itu ke file .python-version di folder proyek, sehingga tiap proyek otomatis memakai versinya. Mekanisme utamanya tetap PATH; pyenv dipasang lewat installer resmi di repositori GitHub proyek tersebut.

Dengan interpreter sistem yang terjaga, venv per proyek, dan opsi multi-versi, meja kerja Python di Linux lengkap. Ecosystem berikutnya menawarkan model berbeda: Node.js dengan pengelola package raksasa npm dan folder node_modules yang terkenal memakan disk.