Python

Persekitaran Maya di Python 3

Persekitaran Maya di Python 3
Seperti kebanyakan orang, saya tidak suka memasang pakej yang tidak perlu di stesen kerja saya. Setelah anda selesai melakukannya, menyahpasangnya tidak pernah mencukupi. Pakej meninggalkan banyak folder dan fail. Mereka memerlukan banyak bungkusan (tidak jelas) lain yang juga ditinggalkan setelah terjadinya sesuatu. Perlahan-lahan tetapi pasti perkara-perkara ini terbentuk di stesen kerja anda dan walaupun mereka mungkin tidak menyekat sebahagian besar ruang cakera anda, ia boleh menyebabkan masalah lain.

Kebergantungan yang lebih tua

Pakej lama mungkin masih ada dan kod Python anda akan menggunakannya dengan senang hati. Ini tidak menjadi masalah jika skrip Python anda dimaksudkan untuk dijalankan secara tempatan, dan bukan untuk tujuan industri. Para saintis data, pelajar dan bahkan orang biasa yang mengotomatisasi tugas sehari-hari mereka dapat terus menggunakan paket lama tanpa banyak masalah.

Masalahnya bermula apabila anda menghantar kod anda ke pengeluaran. Apabila anda melakukannya, kemungkinan anda hanya akan menghantar skrip utama anda dan tidak semua pergantungan pakej. Sebagai contoh, jika anda telah menulis perkhidmatan mikro untuk dihantar sebagai fungsi AWS Lambda, beberapa baris pertama mungkin mengimport modul permintaan seperti ini:

permintaan import

Pakej permintaan yang dibekalkan oleh AWS lambda akan berbeza dengan yang lama dan akibatnya program tersebut mungkin terhenti.

Konflik

Konflik mungkin juga muncul dalam gambar di mana projek yang berbeza menggunakan versi yang berbeza dari pakej yang sama. Mungkin beberapa projek lama anda memerlukan pakej pip lama. Tetapi anda mungkin memerlukan pakej yang lebih baru untuk projek lain. Menjalankan pemasangan pip -U akan menaik taraf pakej di seluruh OS anda menyebabkan masalah apabila anda kembali mengekalkan projek lama anda.

Persekitaran Maya Python

Sekiranya anda menggunakan sebarang versi Python di atas 3.5, anda boleh menggunakan modul bawaan yang disebut venv untuk membuat apa yang dipanggil Python Virtual Environments. Apa yang dilakukan oleh modul ini ialah membuat folder atau direktori terpencil di mana semua pakej pip dan pergantungan anda boleh hidup. Folder ini juga mengandungi skrip 'activate' di dalamnya. Setiap kali anda ingin menggunakan persekitaran maya tertentu, anda hanya menjalankan skrip ini setelah itu hanya paket yang terdapat di dalam folder ini yang dapat diakses. Sekiranya anda menjalankan pemasangan pip, pakej akan dipasang di dalam folder ini dan tidak di tempat lain. Setelah selesai menggunakan persekitaran, anda boleh 'menyahaktifkannya' dan hanya pakej pip global yang akan tersedia untuk anda.

Sekiranya anda menggunakan Ubuntu 18.04 dan ke atas, anda bahkan tidak perlu memasang pengurus paket pip di seluruh sistem anda. Pip hanya boleh wujud di dalam persekitaran maya anda jika anda suka dengan cara itu.

Memasang venv dan Membuat Persekitaran Maya

Ubuntu 18.04 LTS keluar dari kotak dengan Python 3.6.x, tetapi modul Python venv tidak dipasang, tidak juga pip. Mari pasang hanya venv.

$ apt memasang python3-venv

Seterusnya, kami pergi ke direktori di mana anda mahu direktori Lingkungan Maya anda dibuat. Bagi saya ia adalah ~ / projek1

$ cd ~ / projek1

Buat venv anda dengan arahan berikut, perhatikan my-env hanyalah nama persekitaran itu, anda boleh menamakannya apa sahaja yang anda mahukan:

$ python3 -m venv my-env

Catatan: Beberapa pemasangan Python3, seperti yang terdapat di Windows, anda memanggil jurubahasa Python menggunakan python dan bukan python3, tetapi perubahan dari sistem ke sistem. Demi konsistensi, saya akan menggunakan python3 sahaja.

Setelah arahan selesai dilaksanakan, anda akan melihat folder baru ~ / project1 / my-evn. Untuk mengaktifkan persekitaran maya my-env, anda perlu:

  1. Lari,
    $ sumber ~ / projek1 / my-env / bin / aktifkan jika anda menggunakan Bash.
    Terdapat skrip alternatif yang disebut aktifkan.ikan dan aktifkan.csh untuk orang yang masing-masing menggunakan kerang ikan dan csh.
  2. Pada Windows, skrip boleh dipanggil dengan menjalankan:
    >.\ my-env \ Skrip \ aktifkan.kelawar jika anda menggunakan command prompt, atau,
    >.\ my-env \ Skrip \ aktifkan.ps1 jika anda menggunakan PowerShell.

Menggunakan Persekitaran Maya

Sebaik sahaja anda berjaya menjalankan skrip, anda akan melihat bahawa perubahan itu berubah seperti yang ditunjukkan di bawah, anda kini boleh memasang pakej menggunakan pip:

(my-env) Permintaan pemasangan $ pip3
## Kami dapat menyenaraikan paket yang dipasang dengan menggunakan perintah 'pip freeze'
(my-env) $ pip3 beku
sijil == 2018.10.15
chardet == 3.0.4
idna == 2.7
pkg-sumber == 0.0.0
permintaan == 2.20.1
urllib3 == 1.24.1

Selagi persekitaran maya aktif (seperti yang ditunjukkan oleh arahan) semua pakej akan disimpan hanya di direktori persekitaran maya (my-env), di mana sahaja anda berada di sistem fail.

Untuk keluar dari persekitaran maya, anda boleh menaip dinyahaktifkan pada arahan dan anda akan kembali menggunakan pemasangan sistem Python di seluruh sistem. Anda dapat melihat bahawa pakej baru yang kami pasang tidak akan ditunjukkan dalam pemasangan pip global.

Untuk menyingkirkan persekitaran maya, hapus folder my-env yang dibuat setelah menjalankan modul. Anda boleh membuat sebilangan persekitaran yang anda mahukan.

Kesimpulannya

Dengan modul venv, persekitaran maya kini tersedia sebagai ciri standard Python, terutamanya jika anda memasang dari Python.org. Sebelum ini, kami pernah mempunyai banyak implementasi pihak ketiga yang disebut virtualenv, pyenv, dll.

Ini menimbulkan semakin banyak perisian kembung seperti Anaconda, yang sangat popular di kalangan saintis data. Adalah baik untuk akhirnya mempunyai alat yang sederhana untuk menguruskan pakej Python tanpa perlu memasang banyak sampah lain yang tidak berkaitan. Anda boleh membaca lebih lanjut mengenai venv di sini.

5 Permainan Arcade Terbaik untuk Linux
Pada masa kini, komputer adalah mesin serius yang digunakan untuk permainan. Sekiranya anda tidak dapat memperoleh skor tinggi baru, anda akan tahu ma...
Battle For Wesnoth 1.13.6 Pembangunan Dikeluarkan
Battle For Wesnoth 1.13.6 dilancarkan bulan lalu, adalah rilis pengembangan keenam di 1.13.siri x dan memberikan sejumlah penambahbaikan, terutamanya ...
Cara Memasang League Of Legends di Ubuntu 14.04
Sekiranya anda peminat League of Legends, maka ini adalah peluang bagi anda untuk menguji menjalankan League of Legends. Perhatikan bahawa LOL disokon...