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 importPakej 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
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-venvSeterusnya, kami pergi ke direktori di mana anda mahu direktori Lingkungan Maya anda dibuat. Bagi saya ia adalah ~ / projek1
$ cd ~ / projek1Buat venv anda dengan arahan berikut, perhatikan my-env hanyalah nama persekitaran itu, anda boleh menamakannya apa sahaja yang anda mahukan:
$ python3 -m venv my-envCatatan: 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:
- 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. - 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.