Virtualenv dan venv: Persekitaran maya Python dijelaskan

Dari semua sebab Python menjadi pilihan dengan pemaju, salah satu yang terbesar adalah pilihan pakej pihak ketiga yang luas dan terus berkembang. Kit alat yang sesuai untuk segala-galanya, dari pengambilan dan pemformatan data hingga matematik berkelajuan tinggi dan pembelajaran mesin hanya dalam jarak importatau lebih pip installjauh.

Tetapi apa yang berlaku apabila pakej-pakej itu tidak saling bermain dengan baik? Apa yang anda lakukan apabila projek Python yang berbeza memerlukan versi bertanding atau tidak serasi dengan alat tambah yang sama? Di situlah persekitaran maya Python dimainkan.

Anda boleh membuat dan bekerja dengan persekitaran maya di Python 2 dan Python 3, walaupun alatnya berbeza. Virtualenv adalah alat pilihan untuk Python 2, sementara venv menangani tugas di Python 3. 

Apakah persekitaran maya Python?

Persekitaran maya adalah cara untuk mempunyai beberapa contoh, interpreter Python yang selari, masing-masing dengan set pakej dan konfigurasi yang berbeza. Setiap persekitaran maya mengandungi salinan diskrit jurubahasa Python, termasuk salinan utiliti sokongannya.

Pakej yang dipasang di setiap persekitaran maya dilihat hanya dalam persekitaran maya dan tidak ada yang lain. Bahkan pakej besar dan kompleks dengan binari yang bergantung pada platform dapat dihilangkan antara satu sama lain dalam persekitaran maya.

Terdapat beberapa kes penggunaan biasa untuk persekitaran maya:

  1. Anda sedang membangunkan banyak projek yang bergantung pada versi yang berbeza dari pakej yang sama, atau anda mempunyai projek yang mesti diasingkan dari pakej tertentu kerana perlanggaran ruang nama. Ini adalah kes penggunaan yang paling standard.
  2. Anda bekerja di persekitaran Python di mana anda tidak dapat mengubah direktori pakej laman web. Ini mungkin kerana anda bekerja di persekitaran yang sangat terkawal, seperti hosting yang dikendalikan, atau di pelayan di mana pilihan jurubahasa (atau pakej yang digunakan di dalamnya) tidak dapat diubah kerana keperluan pengeluaran.
  3. Anda ingin bereksperimen dengan kombinasi pakej tertentu dalam keadaan yang sangat terkawal, misalnya untuk menguji keserasian silang atau keserasian kebelakang.
  4. Anda ingin menjalankan versi "asas" jurubahasa Python pada sistem tanpa pakej pihak ketiga, dan hanya memasang pakej pihak ketiga untuk setiap projek individu yang diperlukan.

Tidak ada yang mengatakan bahawa anda tidak boleh membongkar pustaka Python ke dalam subfolder projek dan menggunakannya dengan cara itu. Begitu juga, anda boleh memuat turun salinan mandiri jurubahasa Python, membongkarnya ke dalam folder, dan menggunakannya untuk menjalankan skrip dan pakej yang dikhaskan untuknya.

Tetapi menguruskan projek-projek seperti itu segera menjadi sukar. Ia hanya seolah-olah lebih mudah untuk berbuat demikian pada mulanya. Bekerja dengan pakej yang mempunyai komponen binari, atau bergantung pada pergantungan pihak ketiga yang rumit, boleh menjadi mimpi buruk. Penyelesaian jangka panjang terbaik adalah menggunakan mekanisme asli Python untuk membuat dan bekerja dengan persekitaran maya.

Persekitaran maya di Python 3

Virtualenv terbukti sangat diperlukan oleh pembangun Python yang tidak terhitung jumlahnya, tetapi ia bukan sebahagian daripada pustaka standard Python. Python 3 mempunyai perkakas asli untuk persekitaran maya yang menjadikan keseluruhan prosesnya cukup mudah.

Video berkaitan: Bagaimana Python menjadikan pengaturcaraan lebih mudah

Sempurna untuk IT, Python mempermudah pelbagai jenis pekerjaan, dari automasi sistem hingga bekerja di bidang canggih seperti pembelajaran mesin.

Buat persekitaran maya

Untuk membuat persekitaran maya dalam direktori tertentu, ketik:

python3 -m venv /path/to/directory

(Perhatikan bahawa anda hanya boleh menggunakan  pythondan bukannya python3jika sistem anda mengenali pythonsebagai jurubahasa Python 3 lalai.)

Keseluruhan proses penyediaan persekitaran maya mungkin memerlukan satu atau dua minit. Setelah selesai, anda harus mempunyai direktori dengan beberapa subdirektori di dalamnya. Subdirektori yang paling penting adalah  binpada Unix atau  ScriptsWindows, di mana anda akan mendapat salinan jurubahasa Python untuk persekitaran maya bersama dengan utiliti.

Perhatikan bahawa kerana setiap persekitaran maya mengandungi salinan jurubahasa Python sendiri, ia cukup besar. Pada Windows dan Linux, persekitaran maya Python 3.6 akan menggunakan sekitar 23 MB ruang cakera.

Aktifkan persekitaran maya

Sebelum anda dapat menggunakan persekitaran maya ini, anda perlu mengaktifkannya secara eksplisit . Pengaktifan menjadikan persekitaran maya sebagai pentafsir Python lalai selama sesi.

Anda perlu menggunakan sintaks yang berbeza untuk mengaktifkan persekitaran maya bergantung pada sistem operasi dan shell perintah yang anda gunakan.

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

Perhatikan bahawa persekitaran yang diaktifkan hanya berfungsi untuk konteks yang diaktifkan . Contohnya, jika anda melancarkan dua contoh PowerShell, A dan B, dan anda hanya mengaktifkan persekitaran maya dalam contoh A, persekitaran itu hanya akan berlaku untuk A. Ia tidak akan berlaku di tempat lain.

Konfigurasikan dan gunakan persekitaran maya

Setelah anda mengaktifkan persekitaran maya yang baru, anda boleh menggunakan pengurus paket pip untuk menambah dan menukar pakej untuknya. Anda akan menemui pip di Scriptssubdirektori persekitaran maya pada Windows, dan di binsubdirektori pada Unix OS.

Sekiranya anda sudah biasa dengan cara pip berfungsi, anda sudah bersedia. Ia semestinya sama dalam persekitaran maya. Pastikan anda menggunakan contoh pip yang menguruskan pakej untuk persekitaran maya dalam konteks di mana ia diaktifkan - misalnya, sesi bash atau sesi Windows CLI / PowerShell. Sekiranya anda ingin mengesahkan bahawa anda menggunakan pip yang betul dan persekitaran maya yang betul, ketik pip -Vdan periksa bahawa jalan yang dipaparkannya menunjuk ke subdirektori persekitaran maya anda.

Untuk menggunakan persekitaran maya yang anda buat untuk menjalankan skrip Python, cukup panggil Python dari baris arahan dalam konteks di mana anda mengaktifkannya.

Menyahaktifkan persekitaran maya

Setelah selesai menggunakan persekitaran maya, anda boleh menghentikan sesi di mana anda menggunakannya. Sekiranya anda ingin terus bekerja di persekitaran tetapi dengan jurubahasa Python lalai, ketik deactivatepada arahan. Pengguna Windows pada Prompt Perintah perlu dijalankan deactivate.batdari Scriptssubdirektori, tetapi pengguna Unix dan pengguna Windows yang menjalankan PowerShell hanya dapat menaip deactivatedirektori apa pun.

Mengeluarkan persekitaran maya

Persekitaran maya adalah mandiri. Apabila anda tidak lagi memerlukan persekitaran maya, anda boleh memadamkan direktori sahaja.

Persekitaran maya di Python 2

Dengan Python 2, persekitaran maya bukan ciri asli bahasa. Sebaliknya, anda perlu memasang perpustakaan pihak ketiga untuk membuat dan menguruskan persekitaran maya.

Projek-projek ini yang paling popular dan banyak digunakan adalah virtualenv, yang menangani pembuatan struktur direktori dan menyalin fail yang diperlukan ke dalam persekitaran maya. Untuk memasang virtualenv, gunakan sahaja pip install virtualenv. Untuk membuat direktori persekitaran maya dengannya, ketik virtualenv /path/to/directory. Mengaktifkan dan menyahaktifkan persekitaran maya berfungsi sama seperti persekitaran maya di Python 3 (lihat di atas).

Menggunakan persekitaran maya dengan buku nota Jupyter

Sekiranya anda menggunakan buku nota Jupyter (aka notebook IPython), dan anda sudah memasang Jupyter secara sistematik, buat persekitaran maya anda dan aktifkan. Kemudian, dari direktori persekitaran maya anda, jalankan pip install ipykerneluntuk menambahkan komponen yang diperlukan untuk IPython. Akhirnya, jalankan ipython kernel install —user —name=, di mana project_name adalah nama yang ingin anda kaitkan dengan projek tertentu itu. Dari sana anda seharusnya dapat melancarkan Jupyter dan beralih ke kernel IPython yang anda pasang di dalam persekitaran maya.