Virtualenv dan venv: Penjelasan lingkungan virtual Python

Dari semua alasan Python menjadi hit di kalangan pengembang, salah satu yang terbesar adalah pilihan paket pihak ketiga yang luas dan terus berkembang. Toolkit yang nyaman untuk segala hal mulai dari mencerna dan memformat data hingga matematika kecepatan tinggi dan pembelajaran mesin hanya dalam satu importatau beberapa langkah pip install.

Tetapi apa yang terjadi jika paket-paket itu tidak cocok satu sama lain? Apa yang Anda lakukan ketika proyek Python yang berbeda membutuhkan versi yang bersaing atau tidak kompatibel dari add-on yang sama? Di situlah lingkungan virtual Python berperan.

Anda dapat membuat dan bekerja dengan lingkungan virtual di Python 2 dan Python 3, meskipun alatnya berbeda. Virtualenv adalah alat pilihan untuk Python 2, sementara venv menangani tugas di Python 3. 

Apa itu lingkungan virtual Python?

Lingkungan virtual adalah cara untuk memiliki beberapa instance paralel dari interpreter Python, masing-masing dengan set paket dan konfigurasi berbeda. Setiap lingkungan virtual berisi salinan terpisah dari interpreter Python, termasuk salinan utilitas pendukungnya.

Paket yang diinstal di setiap lingkungan virtual hanya terlihat di lingkungan virtual itu dan tidak ada yang lain. Bahkan paket yang besar dan kompleks dengan binari yang bergantung pada platform dapat dihubungkan satu sama lain dalam lingkungan virtual.

Ada beberapa kasus penggunaan umum untuk lingkungan virtual:

  1. Anda sedang mengembangkan beberapa proyek yang bergantung pada versi berbeda dari paket yang sama, atau Anda memiliki proyek yang harus diisolasi dari paket tertentu karena tabrakan namespace. Ini adalah kasus penggunaan paling standar.
  2. Anda bekerja di lingkungan Python di mana Anda tidak dapat mengubah direktori paket situs. Ini mungkin karena Anda bekerja di lingkungan yang sangat terkontrol, seperti hosting terkelola, atau di server di mana pilihan penerjemah (atau paket yang digunakan di dalamnya) tidak dapat diubah karena persyaratan produksi.
  3. Anda ingin bereksperimen dengan kombinasi paket tertentu dalam keadaan yang sangat terkontrol, misalnya untuk menguji kompatibilitas silang atau kompatibilitas mundur.
  4. Anda ingin menjalankan versi "baseline" dari interpreter Python pada sistem tanpa paket pihak ketiga, dan hanya menginstal paket pihak ketiga untuk setiap project sesuai kebutuhan.

Tidak ada yang mengatakan Anda tidak bisa begitu saja membongkar pustaka Python ke dalam subfolder dari sebuah proyek dan menggunakannya dengan cara itu. Demikian juga, Anda dapat mengunduh salinan mandiri penerjemah Python, mengekstraknya ke dalam folder, dan menggunakannya untuk menjalankan skrip dan paket yang dikhususkan untuk itu.

Tetapi mengelola proyek berbatu seperti itu segera menjadi sulit. Hanya tampaknya lebih mudah untuk melakukan itu pada awalnya. Bekerja dengan paket yang memiliki komponen biner, atau yang bergantung pada dependensi pihak ketiga yang rumit, bisa menjadi mimpi buruk. Solusi jangka panjang terbaik adalah menggunakan mekanisme asli Python untuk membuat dan bekerja dengan lingkungan virtual.

Lingkungan virtual di Python 3

Virtualenv telah terbukti sangat diperlukan oleh pengembang Python yang tak terhitung jumlahnya, tetapi itu bukan bagian dari pustaka standar Python. Python 3 memiliki perkakas asli untuk lingkungan virtual yang membuat keseluruhan proses menjadi cukup sederhana.

Video terkait: Bagaimana Python membuat pemrograman lebih mudah

Sempurna untuk TI, Python menyederhanakan banyak jenis pekerjaan, dari otomatisasi sistem hingga bekerja di bidang-bidang mutakhir seperti pembelajaran mesin.

Ciptakan lingkungan virtual

Untuk membuat lingkungan virtual di direktori tertentu, ketik:

python3 -m venv /path/to/directory

(Catatan bahwa Anda hanya dapat menggunakan  pythonbukan python3jika sistem anda mengakui pythonsebagai default Python 3 interpreter.)

Seluruh proses pengaturan lingkungan virtual mungkin memerlukan satu atau dua menit. Setelah selesai, Anda akan memiliki direktori dengan beberapa subdirektori di dalamnya. Subdirektori terpenting ada  bindi Unix atau  ScriptsWindows, di mana Anda akan menemukan salinan interpreter Python untuk lingkungan virtual beserta utilitasnya.

Perhatikan bahwa karena setiap lingkungan virtual berisi salinan interpreter Python-nya sendiri, ukurannya bisa cukup besar. Pada Windows dan Linux, lingkungan virtual Python 3.6 akan menghabiskan sekitar 23 MB ruang disk.

Aktifkan lingkungan virtual

Sebelum Anda dapat menggunakan lingkungan virtual ini, Anda perlu mengaktifkannya secara eksplisit . Aktivasi menjadikan lingkungan virtual sebagai penerjemah Python default selama sesi.

Anda harus menggunakan sintaks yang berbeda untuk mengaktifkan lingkungan virtual tergantung pada sistem operasi dan shell perintah yang Anda gunakan.

  • Di Unix atau MacOS, menggunakan bash shell: source /path/to/venv/bin/activate
  • Di Unix atau MacOS, menggunakan csh shell: source /path/to/venv/bin/activate.csh
  • Di Unix atau MacOS, menggunakan cangkang ikan: source /path/to/venv/bin/activate.fish
  • Di Windows menggunakan Command Prompt:path\to\venv\Scripts\activate.bat
  • Di Windows yang menggunakan PowerShell: path\to\venv\Scripts\Activate.ps1

Perhatikan bahwa lingkungan yang diaktifkan hanya berfungsi untuk konteks tempat itu diaktifkan . Misalnya, jika Anda meluncurkan dua instans PowerShell, A dan B, dan Anda hanya mengaktifkan lingkungan virtual di instans A, lingkungan itu hanya akan berlaku untuk A. Ini tidak akan berlaku di tempat lain.

Konfigurasi dan gunakan lingkungan virtual

Setelah Anda mengaktifkan lingkungan virtual baru, Anda dapat menggunakan pengelola paket pip untuk menambah dan mengubah paket untuknya. Anda akan menemukan pip di Scriptssubdirektori dari lingkungan virtual di Windows, dan di binsubdirektori di Unix OS.

Jika Anda sudah terbiasa dengan cara kerja pip, Anda sudah siap. Ini harus sama di lingkungan virtual. Pastikan Anda menggunakan instance pip yang mengelola paket untuk lingkungan virtual dalam konteks tempat pengaktifannya — misalnya, sesi bash atau sesi Windows CLI / PowerShell. Jika Anda ingin memverifikasi bahwa Anda menggunakan pip yang tepat dan lingkungan virtual yang benar, ketik pip -Vdan periksa apakah jalur yang ditampilkannya mengarah ke subdirektori lingkungan virtual Anda.

Untuk menggunakan lingkungan virtual yang Anda buat untuk menjalankan skrip Python, cukup aktifkan Python dari baris perintah dalam konteks tempat Anda mengaktifkannya.

Menonaktifkan lingkungan virtual

Setelah selesai menggunakan lingkungan virtual, Anda bisa menghentikan sesi tempat Anda menggunakannya. Jika Anda ingin terus bekerja di lingkungan tetapi dengan penerjemah Python default, ketik deactivatesaat diminta. Pengguna Windows di Command Prompt harus menjalankan deactivate.batdari Scriptssubdirektori, tetapi pengguna Unix dan pengguna Windows yang menjalankan PowerShell dapat dengan mudah mengetik deactivatedi direktori mana pun.

Menghapus lingkungan virtual

Lingkungan virtual berdiri sendiri. Ketika Anda tidak lagi membutuhkan lingkungan virtual, Anda cukup menghapus direktorinya.

Lingkungan virtual di Python 2

Dengan Python 2, lingkungan virtual bukanlah fitur asli dari bahasa tersebut. Sebagai gantinya, Anda perlu menginstal pustaka pihak ketiga untuk membuat dan mengelola lingkungan virtual.

Proyek yang paling populer dan banyak digunakan adalah virtualenv, yang menangani pembuatan struktur direktori dan menyalin file yang diperlukan ke dalam lingkungan virtual. Untuk menginstal virtualenv, cukup gunakan pip install virtualenv. Untuk membuat direktori lingkungan virtual dengannya, ketik virtualenv /path/to/directory. Mengaktifkan dan menonaktifkan lingkungan virtual bekerja dengan cara yang sama seperti yang dilakukannya untuk lingkungan virtual di Python 3 (lihat di atas).

Menggunakan lingkungan virtual dengan notebook Jupyter

Jika Anda menggunakan notebook Jupyter (alias notebook IPython), dan Anda sudah menginstal Jupyter di seluruh sistem, buat lingkungan virtual Anda dan aktifkan. Kemudian, dari direktori lingkungan virtual Anda, jalankan pip install ipykerneluntuk menambahkan komponen yang diperlukan untuk IPython. Terakhir, jalankan ipython kernel install —user —name=, di mana project_name adalah nama yang ingin Anda kaitkan dengan proyek tertentu itu. Dari sana Anda harus dapat meluncurkan Jupyter dan beralih ke kernel IPython yang Anda instal di dalam lingkungan virtual.