Cheatsheet Python venv
beberapa perintah venv yang berguna
Venv adalah alat manajemen lingkungan virtual berbasis perintah baris untuk Python. Ini jauh lebih sederhana dibandingkan Anaconda. Berikut beberapa perintah venv yang berguna.
Hanya untuk Anda ketahui bahwa menurut pendapat saya, ada alat yang jauh lebih baik untuk manajemen paket dan lingkungan Python, yaitu uv. Silakan lihat: uv - Manajer Baru untuk Paket, Proyek, dan Lingkungan Python
Cheat Sheet Venv Python
Membuat Lingkungan Virtual
-
Perintah standar (Python 3.3+):
python -m venv venv
Ini akan membuat lingkungan virtual bernama
venv
di direktori saat ini. -
Dengan versi Python tertentu (jika terinstal):
python3.10 -m venv venv
atau menggunakan
virtualenv
:virtualenv -p /usr/local/bin/python3.10 venv
(Membutuhkan paket
virtualenv
).
Mengaktifkan Lingkungan Virtual
- Di Windows:
.\venv\Scripts\activate
- Di macOS/Linux:
Prompt shell sekarang harus menampilkan nama lingkungan.source venv/bin/activate
Menonaktifkan Lingkungan Virtual
- Di semua platform:
Ini akan mengembalikan Anda ke Python sistem.deactivate
Menginstal Paket
- Dengan pip:
Contoh:pip install
pip install numpy pandas
- Upgrade pip (direkomendasikan):
python -m pip install --upgrade pip
Membekukan dan Mengekspor Persyaratan
- Simpan paket lingkungan saat ini:
pip freeze > requirements.txt
- Instal dari file requirements:
Pastikan lingkungan virtual Anda telah diaktifkan sebelum menjalankan perintah ini.pip install -r requirements.txt
Menghapus Lingkungan Virtual
deactivate
rm -rf <env path>
Kesalahan Umum Saat Mengelola Lingkungan Virtual Python
Lupa Mengaktifkan Lingkungan Virtual
- Kesalahan umum adalah menjalankan perintah tanpa mengaktifkan lingkungan virtual yang dimaksud, yang menyebabkan pemasangan paket di lingkungan global atau venv yang salah. Hal ini dapat menyebabkan konflik dependensi dan perilaku yang tidak terduga.
Tidak Mengunci Versi Paket
- Menggunakan spesifikasi versi yang longgar (seperti
>=
alih-alih==
) dalamrequirements.txt
merusak reproduksibilitas. Mengunci versi paket secara eksak memastikan bahwa semua orang yang bekerja pada proyek menggunakan versi paket yang sama, mencegah masalah tak terduga saat pengiriman atau kolaborasi.
Bercampur antara Lingkungan Global dan Virtual
- Secara tidak sengaja menginstal paket secara global atau mencampur lingkungan global dan virtual dapat menciptakan konflik, terutama jika proyek berbeda membutuhkan versi paket yang tidak kompatibel. Pastikan selalu bahwa Anda berada dalam lingkungan yang benar.
Menyertakan Lingkungan Virtual ke Versi Kontrol
- Menyertakan direktori lingkungan virtual (misalnya
venv/
) ke versi kontrol membesarkan repositori dan tidak diperlukan. Selalu tambahkan direktori venv ke.gitignore
untuk menjaga repositori tetap bersih.
Mengabaikan Pemisahan antara Ketergantungan Pengembangan dan Produksi
- Gagal membedakan antara ketergantungan pengembangan dan produksi dapat menyebabkan pengiriman yang bloat atau tidak aman. Gunakan file requirements terpisah atau bagian konfigurasi untuk masing-masing.
Kurangnya Dokumentasi dan Otomatisasi
- Tidak mendokumentasikan langkah pengaturan lingkungan atau gagal mengotomatisasi proses (dengan skrip atau Makefile) membuat onboarding kontributor baru dan reproduksi lingkungan menjadi lebih sulit.
Tidak Secara Rutin Membersihkan Lingkungan Lama
- Seiring waktu, lingkungan virtual yang tidak digunakan dapat menumpuk, menghabiskan ruang disk dan menyebabkan kebingungan. Bersihkan secara rutin lingkungan venv yang usang untuk menjaga kerja ruang tetap rapi.
Mengabaikan Batasan Python Sistem dan Manajer Paket
- Memodifikasi Python sistem atau mencampur manajer paket sistem dengan pip dapat merusak alat sistem dan memperkenalkan masalah yang sulit didiagnosis. Selalu gunakan venv untuk ketergantungan proyek dan hindari mengganggu paket yang dikelola sistem.
Tabel Ringkasan
Kesalahan Umum | Dampak |
---|---|
Lupa mengaktifkan venv | Menginstal paket ke lingkungan yang salah |
Tidak mengunci versi paket | Pembuatan tak terduga, bug sulit direproduksi |
Bercampur antara lingkungan global dan virtual | Konflik dependensi/versi |
Menyertakan direktori venv ke versi kontrol | Repositori bloat dan berantakan |
Tidak memisahkan ketergantungan pengembangan dan produksi | Pengiriman bloat atau tidak aman |
Kurangnya dokumentasi/otomatisasi | Onboarding sulit, pengaturan tidak konsisten |
Tidak membersihkan lingkungan lama | Penggunaan ruang disk, kebingungan |
Memodifikasi Python sistem atau paket | Instabilitas sistem, alat rusak |
Mengikuti praktik terbaik seperti selalu mengaktifkan venv, mengunci dependensi, memisahkan lingkungan, dan menjaga dokumentasi yang jelas dapat membantu Anda menghindari kesalahan umum ini.
Perbedaan Utama antara Conda dan Lingkungan Virtual untuk Reproduksibilitas
Fitur | Lingkungan Conda | Lingkungan Virtual Python (venv/virtualenv) |
---|---|---|
Cakupan Manajemen | Mengelola paket Python dan dependensi non-Python (misalnya, perpustakaan sistem, kompiler) | Mengelola hanya paket Python melalui pip |
Kontrol Versi Python | Dapat menentukan dan menginstal versi Python apa pun per lingkungan | Menggunakan versi Python yang terinstal di sistem |
Konsistensi Silang Platform | Lebih konsisten di berbagai OS (Windows, macOS, Linux) karena mengelola semua dependensi | Bergantung pada perpustakaan sistem, yang mungkin berbeda per OS |
Sumber Paket | Menggunakan repositori Conda (biner yang dikompilasi, stack ilmiah) | Menggunakan PyPI (pip) untuk paket Python |
Reproduksibilitas | Lebih tinggi untuk proyek ilmiah atau campuran bahasa; dapat mengekspor lingkungan penuh (conda env export ) |
Baik untuk proyek Python murni; mungkin kurang reproduksibel jika dependensi sistem terlibat |
Dependensi Non-Python | Dapat menginstal dan mengelola (misalnya, OpenBLAS, libpng) | Tidak dapat mengelola; harus diinstal secara terpisah |
Ekspor/Impor Lingkungan | conda env export / conda env create untuk reproduksibilitas penuh |
pip freeze > requirements.txt / pip install -r requirements.txt (hanya paket Python) |
Kinerja | Lebih cepat dan andal untuk paket ilmiah besar (misalnya, numpy, pandas) | Mungkin memerlukan mengkompilasi dari sumber, terutama di Windows |
Kompleksitas | Sedikit lebih tinggi dalam pengaturan dan manajemen | Ringan, sederhana untuk proyek Python dasar |
Ringkasan Titik Kunci
-
Lingkungan Conda ideal untuk reproduksibilitas dalam proyek yang memerlukan dependensi Python dan non-Python, atau ketika replikasi yang tepat di berbagai platform sangat penting. Conda mengelola seluruh stack—termasuk Python itu sendiri, perpustakaan, dan bahkan kompiler—membuatnya lebih mudah untuk berbagi dan mereproduksi lingkungan kompleks, terutama dalam konteks ilmu data dan penelitian.
-
Lingkungan virtual Python (
venv
/virtualenv
) ringan dan sangat baik untuk memisahkan dependensi Python dalam proyek Python murni. Namun, mereka tidak mengelola dependensi tingkat sistem atau non-Python, sehingga reproduksibilitas mungkin terganggu jika proyek Anda bergantung pada perpustakaan eksternal atau konfigurasi sistem tertentu. -
Mengekspor dan berbagi lingkungan: Conda memungkinkan Anda mengekspor spesifikasi lingkungan penuh (
conda env export
), termasuk semua dependensi dan versinya, yang dapat dibuat ulang secara tepat di tempat lain. Dengan lingkungan virtual,pip freeze
hanya menangkap paket Python, bukan dependensi sistem atau versi interpreter Python. -
Kesimpulan
Gunakan Conda untuk reproduksibilitas maksimal dalam proyek ilmiah, lintas platform, atau proyek kompleks. Gunakan lingkungan virtual Python untuk proyek ringan, murni Python di mana dependensi sistem bukan menjadi kekhawatiran.