- Memungkinkan Anda beralih dengan mudah di antara beberapa versi Python
- Mengikuti tradisi alat UNIX dengan tujuan tunggal yang sederhana, tidak mencolok, dan bekerja dengan baik
- Proyek ini di-fork dari rbenv dan ruby-build lalu dimodifikasi agar sesuai untuk Python
Apa yang dilakukan pyenv
- Memungkinkan perubahan versi Python global per pengguna.
- Mendukung versi Python per proyek.
- Memungkinkan override versi Python menggunakan variabel lingkungan.
- Dapat mencari beberapa versi perintah Python sekaligus. Berguna untuk pengujian lintas versi Python dengan tox.
Apa yang tidak dilakukan pyenv...
- Tidak bergantung pada Python itu sendiri. pyenv dibuat sebagai skrip shell murni.
- Tidak perlu dimuat ke dalam shell. Sebagai gantinya, pyenv menggunakan pendekatan shim dengan menambahkan direktori ke
PATH.
- Tidak mengelola virtualenv. Tentu saja, pengguna dapat membuat virtualenv sendiri atau mengotomatiskannya dengan pyenv-virtualenv.
Cara kerjanya
- pyenv mencegat perintah Python menggunakan executable shim yang disisipkan ke
PATH, menentukan versi Python yang ditetapkan aplikasi, lalu meneruskan perintah ke instalasi Python tersebut.
Memahami PATH
- Saat Anda menjalankan perintah seperti
python atau pip, sistem operasi akan mencari executable dengan nama tersebut dalam daftar direktori pada variabel lingkungan PATH.
Memahami Shims
- pyenv menyisipkan direktori shims di bagian paling depan
PATH. Melalui proses rehashing, pyenv mempertahankan shim untuk semua perintah Python dari semua versi Python yang terinstal.
Memahami pemilihan versi Python
- Saat sebuah shim dijalankan, pyenv membaca dan menggunakan versi Python dari sumber berikut secara berurutan:
- Variabel lingkungan
PYENV_VERSION (jika ditentukan).
- File
.python-version khusus aplikasi di direktori saat ini (jika ada).
- File
.python-version pertama yang ditemukan dengan menelusuri setiap direktori induk hingga mencapai root sistem file (jika ada).
- File global
$(pyenv root)/version.
Menemukan lokasi instalasi Python yang disediakan pyenv
- pyenv meneruskan perintah ke instalasi Python sesuai versi Python yang telah ditentukannya.
- Setiap versi Python diinstal dalam direktorinya sendiri di bawah
$(pyenv root)/versions.
Cara penggunaan
Menginstal versi Python tambahan
- Gunakan
pyenv install untuk memasang versi Python tambahan.
Penyelesaian otomatis ke versi terbaru
- Semua subperintah Pyenv, kecuali
uninstall, otomatis menyelesaikan seluruh prefiks ke versi terbaru.
Versi Python dengan dukungan ekstensi
- Ada rilis Python yang menerapkan patch buatan pengguna untuk menambahkan dukungan pada lingkungan tertentu.
Berpindah antar versi Python
- Untuk menggunakan Python yang diinstal oleh Pyenv, jalankan salah satu perintah berikut:
pyenv shell
pyenv local
pyenv global
Menghapus versi Python
- Seiring waktu, versi-versi Python akan menumpuk di direktori
$(pyenv root)/versions.
- Untuk menghapus versi Python lama, gunakan
pyenv uninstall .
Tugas lainnya
- Untuk melihat daftar semua subperintah yang tersedia, jalankan
pyenv commands.
Menghapus pyenv
- Mudah untuk menonaktifkan Pyenv sementara atau menghapusnya dari sistem.
Plugin Pyenv
- Dengan plugin, Anda dapat memperluas dan menyesuaikan fungsi Pyenv dengan cara yang sederhana, fleksibel, dan mudah dirawat.
Konfigurasi lanjutan
- Ada variabel lingkungan yang mengendalikan perilaku Pyenv.
Pengembangan
- Kode sumber Pyenv di-host di GitHub.
- Pengujian dijalankan menggunakan Bats.
Opini GN⁺
- pyenv adalah alat yang sangat berguna untuk mengelola berbagai versi Python. Terutama membantu bagi pengembang yang harus menggunakan versi Python berbeda di beberapa proyek.
- Alat ini tidak bergantung pada Python itu sendiri dan disusun sebagai skrip shell murni, sehingga dapat diinstal dan dikelola bahkan pada sistem yang belum memasang Python.
- pyenv tidak mengelola virtualenv secara langsung, tetapi praktis karena dapat mengotomatiskan pengelolaan virtualenv melalui plugin pyenv-virtualenv.
- Karena instalasi dan cara pakainya relatif sederhana, insinyur perangkat lunak pemula yang membutuhkan pengelolaan versi Python pun dapat menggunakannya dengan mudah.
- Alat lain yang menyediakan fungsi serupa dengan pyenv adalah
conda, yang banyak digunakan khususnya di bidang data science dan machine learning. Karena conda menyediakan manajemen paket dan manajemen lingkungan sekaligus, alat ini dapat direkomendasikan kepada pengguna yang membutuhkan fungsi tersebut.
- Saat mengadopsi pyenv, perlu berhati-hati agar tidak terjadi konflik jalur jika beberapa versi Python terpasang di sistem. Keuntungan utama menggunakan pyenv adalah kemudahan manajemen versi, tetapi konfigurasi yang salah dapat mengganggu jalur Python default sistem.
7 komentar
Untuk
conda, perlu diperhatikan bahwa di perusahaan dengan skala tertentuberbayar.
Meski perusahaannya kecil, kalau skala klien utamanya besar, jadi serba sulit untuk memasoknya
Conda sendiri gratis dengan lisensi BSD, tetapi pastikan untuk benar-benar memeriksa lisensi repositori dan paketnya.
Saya menaruh
asdfdi level paling atas https://asdf-vm.com/Lalu untuk tiap proyek kadang dikonfigurasi secara local, kadang juga memakai container...
Karena sekarang sudah banyak cara baru untuk menyusun + me-manage environment, saya jadi jarang memakainya juga sih.. hahaha
Saya juga memakainya persis seperti itu.
Haha, secara pribadi saya merasa pyenv agak terasa jadul.
Karena hal-hal seperti rbenv, pyenv, nodenv terus bermunculan, pada akhirnya muncul juga yang namanya anyenv. haha
https://github.com/anyenv/anyenv
Opini Hacker News
Peringatan tentang penggunaan pyenv
Penderitaan programmer Python
Alat untuk menjaga program Python tetap stabil
Pengenalan alat Mise
Kelebihan ASDF
Berbagi pengalaman menggunakan pyenv
python<version> -m venv /my/virtual/env.Stack pribadi untuk mengelola Python
Mengelola dependensi runtime dengan Mise
Berbagi workflow macOS
Sepertinya di sinilah letak bagian yang paling menyakitkan.