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:
which python3
python3 --version
python3 -c "import json; print(json.dumps({'nama': 'Budi'}))"
pip3 --versionOutput yang Dihasilkan:
/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:
which python3: lokasi interpreter —/usr/bin/python3di mesin uji. Perintahpythontanpa angka 3 tidak ada di Debian; packagepython-is-python3menyediakannya sebagai symlink bila diperlukan.python3 --version: versi 3.13.5 — milik mesin uji dan mengikuti pembaruan distro, bukan pilihan bebas kita.python3 -c "...": menjalankan potongan kode tanpa file; modul bawaan sepertijsonlangsung tersedia.pip3 --version: pengelola package dari PyPI (Python Package Index), dikemas Debian sebagaipython3-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:
| Aspek | apt install python3-requests | pip install requests |
|---|---|---|
| Sumber | repository distro | PyPI |
| Versi | dikunci rilis distro | rilis upstream terbaru |
| Pembaruan | mengikuti apt upgrade | manual per proyek |
| Cakupan | seluruh sistem | lingkungan aktif (mis. venv) |
| Diverifikasi tim distro | ya | tidak |
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:
printf '#!/usr/bin/env python3\nprint("halo dari skrip Python")\n' > sapa.py
chmod +x sapa.py
./sapa.py
python3 sapa.pyOutput yang Dihasilkan:
halo dari skrip Python
halo dari skrip PythonBedah baris per barisnya:
#!/usr/bin/env python3: meminta programenvmencaripython3diPATH, bukan mematok/usr/bin/python3. Dampaknya besar: skrip ini memakai Python mana pun yang sedang “menang” diPATH— termasuk interpreter virtual environment, seperti akan kita lihat sebentar lagi.chmod +x sapa.py: memberi hak eksekusi, sama seperti skrip shell di Chapter Compilers dan Build Tools ../sapa.pydanpython3 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:
python3 -m venv .venv 2>&1Output yang Dihasilkan:
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/python3Pesan 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:
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 python3Output yang Dihasilkan:
/home/budi/.venv/bin/python3
paket di: /home/budi/.venv
/usr/bin/python3Bedah yang terjadi di balik layar:
python3 -m venv --without-pip .venv: modulvenvdijalankan lewat opsi-m. Folder.venvberisibin/(interpreter danactivate) sertalib/untuk pustaka; interpreternya symlink tipis ke Python sistem — venv sangat ringan.source .venv/bin/activate: menjalankan scriptactivatedi shell saat ini. Isinya bukan sihir: meletakkan.venv/binpaling depan diPATHdan menyetelVIRTUAL_ENV— tanpa proses baru.which python3: buktinya —python3kini menunjuk/home/budi/.venv/bin/python3, sehingga skrip ber-shebangenv python3ikut memakai interpreter venv (path output mengikuti folder mesin masing-masing).python3 cek.py:sys.prefixmenunjuk.venv— pustaka venv dicari di sini, terpisah dari sistem.deactivatelaluwhich python3: mengembalikanPATHseperti semula —python3kembali 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:
* system (set by /home/budi/.pyenv/version)
3.11.9
3.12.4
3.13.1Tanda 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.