Python virtual muhitlarini virtualenv va venv yordamida sozlash bo'yicha keng qamrovli qo'llanma, loyihalarni izolyatsiya qilish va butun dunyo bo'ylab ishlab chiquvchilar uchun bog'liqlikni boshqarishni ta'minlaydi.
Python Virtualenv sozlash: Izolyatsiya qilingan muhit yaratish
Python dasturlarini ishlab chiqish dunyosida bog'liqliklarni boshqarish va loyihalarni izolyatsiya qilish mustahkam va saqlanadigan ilovalarni yaratish uchun juda muhimdir. Bunga erishishning eng samarali usullaridan biri bu virtual muhitlardan foydalanishdir. Virtual muhit - bu o'rnatilgan paketlari bilan birga o'z ichiga olingan Python interpretatorini o'z ichiga olgan o'ziga xos katalogdir. Bu sizga bir vaqtning o'zida bir nechta loyihalarda ishlashga imkon beradi, ularning har biri o'ziga xos bog'liqliklarga ega bo'ladi, turli xil paket versiyalaridan kelib chiqadigan ziddiyatlarsiz.
Nima uchun virtual muhitlardan foydalanish kerak?
Ikki Python loyihasida ishlayotganingizni tasavvur qiling. A loyihasi ma'lum bir kutubxonaning 1.0 versiyasini, B loyihasi esa shu kutubxonaning 2.0 versiyasini talab qiladi. Virtual muhitlarsiz kutubxonani global ravishda o'rnatish loyihalardan biri uchun moslik muammolarini keltirib chiqarishi mumkin. Virtual muhitlar har bir loyiha uchun o'z paketlari to'plamiga ega bo'lish uchun izolyatsiya qilingan joylar taqdim etish orqali bu muammoni hal qiladi.
Virtual muhitlardan foydalanishning ba'zi asosiy afzalliklari:
- Bog'liqlikni izolyatsiya qilish: Har bir loyiha o'z bog'liqliklariga ega, bu esa ziddiyatlarning oldini oladi.
- Versiyani boshqarish: Turli loyihalar uchun paketlarning turli versiyalarini osongina boshqaring.
- Loyihaning qayta tiklanishi: Loyihangizni bir xil bog'liqliklarga ega bo'lgan turli xil mashinalarda osongina takrorlashiga ishonch hosil qiling.
- Toza global muhit: Global Python o'rnatishingizni toza va tartibsiz holda ushlab turadi.
Virtual muhitlarni sozlash: virtualenv va venv
Python-da virtual muhitlarni yaratish uchun ikkita asosiy vosita mavjud: virtualenv
va venv
. virtualenv
uzoq vaqtdan beri mavjud bo'lgan uchinchi tomon paketi bo'lib, keng ko'lamli xususiyatlarni taklif etadi. venv
- Python 3.3 va undan keyingilarida o'rnatilgan modul bo'lib, virtualenv
ga engil alternativani taqdim etadi. Ikkala vosita ham bir xil maqsadga erishadi: izolyatsiya qilingan Python muhitlarini yaratish.
virtualenv yordamida
virtualenv
- virtual muhitlarni yaratish uchun mashhur va keng qo'llaniladigan vositadir. U qanday ishlatilishini ko'rib chiqamiz:
O'rnatish
Birinchidan, siz virtualenv
o'rnatishingiz kerak. Buni pip yordamida amalga oshirishingiz mumkin:
pip install virtualenv
Virtual muhit yaratish
virtualenv
o'rnatilgandan so'ng, siz o'z loyihangiz katalogida virtual muhit yaratishingiz mumkin. Terminalda loyihangiz katalogiga o'ting va quyidagi buyruqni bajaring:
virtualenv myenv
Ushbu buyruq myenv
nomli yangi katalog yaratadi (xohlagan nomingizni tanlashingiz mumkin), u virtual muhitni o'z ichiga oladi. myenv
katalogi quyidagi subkataloglarni o'z ichiga oladi:
bin
: Python bajariladigan fayli va faollashtirish skriptlarini o'z ichiga oladi.include
: Python kengaytmalarni kompilyatsiya qilish uchun C sarlavhalarini o'z ichiga oladi.lib
: O'rnatilgan paketlar joylashgan site-packages katalogini o'z ichiga oladi.
Virtual muhitni faollashtirish
Virtual muhitdan foydalanish uchun uni faollashtirishingiz kerak. Bu sizning qobig'ingizning atrof-muhit o'zgaruvchilarini virtual muhit ichidagi Python interpretatori va paketlaridan foydalanish uchun o'zgartiradi.
Linux/macOS-da quyidagi buyruqdan foydalaning:
source myenv/bin/activate
Windows-da quyidagi buyruqdan foydalaning:
myenv\Scripts\activate
Faollashtirilgandan so'ng, terminal taklifining faol virtual muhitni ko'rsatishini sezasiz (masalan, (myenv) $
). Endi, pip yordamida o'rnatadigan har qanday paketlar virtual muhit ichida o'rnatiladi va global Python o'rnatishingizga yoki boshqa virtual muhitlarga ta'sir qilmaydi.
Virtual muhitni o'chirish
Loyihani tugatganingizda, quyidagi buyruqni bajarish orqali virtual muhitni o'chirishingiz mumkin:
deactivate
Bu sizning terminal taklifini normal holatiga qaytaradi va global Python o'rnatishingizga qaytadi.
venv yordamida
venv
- Python 3.3 va undan keyingilarida o'rnatilgan modul bo'lib, virtualenv
ga engil alternativani taqdim etadi. Agar u mavjud bo'lgan Python versiyasidan foydalansangiz, venv
dan foydalanish tavsiya etiladi.
Virtual muhit yaratish
venv
yordamida virtual muhit yaratish uchun terminalda loyihangiz katalogiga o'ting va quyidagi buyruqni bajaring:
python3 -m venv myenv
Ushbu buyruq myenv
nomli yangi katalog yaratadi (yoki tanlagan har qanday nomingiz) va virtualenv
ga o'xshash virtual muhitni o'z ichiga oladi.
Virtual muhitni faollashtirish
venv
uchun faollashtirish jarayoni virtualenv
bilan bir xil. Linux/macOS-da quyidagi buyruqdan foydalaning:
source myenv/bin/activate
Windows-da quyidagi buyruqdan foydalaning:
myenv\Scripts\activate
Faollashtirilgandan so'ng, sizning terminal taklifingiz faol virtual muhitni ko'rsatadi va o'rnatgan har qanday paketlar muhit ichida izolyatsiya qilinadi.
Virtual muhitni o'chirish
venv
muhitini o'chirish ham virtualenv
bilan bir xil:
deactivate
Pip yordamida bog'liqliklarni boshqarish
Virtual muhitni faollashtirgandan so'ng, siz paketlarni o'rnatish, yangilash va o'chirish uchun pipdan foydalanishingiz mumkin. Mana ba'zi umumiy pip buyruqlari:
- Paketni o'rnatish:
pip install package_name
(masalan,pip install requests
) - Paketning muayyan versiyasini o'rnatish:
pip install package_name==version
(masalan,pip install requests==2.26.0
) - Paketni yangilash:
pip install --upgrade package_name
(masalan,pip install --upgrade requests
) - Paketni o'chirish:
pip uninstall package_name
(masalan,pip uninstall requests
) - O'rnatilgan paketlarni ro'yxatga olish:
pip list
yokipip freeze
Talablar faylini yaratish
Loyihangizning bog'liqliklari boshqa mashinalarda osongina takrorlanishiga ishonch hosil qilish uchun requirements.txt
faylini yaratish eng yaxshi amaliyotdir. Ushbu faylda sizning virtual muhitingizga o'rnatilgan barcha paketlar va ularning versiyalari ro'yxati mavjud.
requirements.txt
faylini yaratish uchun virtual muhitingizni faollashtiring va quyidagi buyruqni bajaring:
pip freeze > requirements.txt
Bu sizning loyihangiz katalogida requirements.txt
nomli faylni yaratadi. Keyin siz bu faylni loyihangizning versiya nazorat tizimiga (masalan, Git) kiritishingiz mumkin, shunda boshqalar bir xil bog'liqliklarni osongina o'rnatishi mumkin.
Talablar faylidan o'rnatish
requirements.txt
faylida ko'rsatilgan bog'liqliklarni o'rnatish uchun virtual muhitingizni faollashtiring va quyidagi buyruqni bajaring:
pip install -r requirements.txt
Bu barcha paketlarni va ularning requirements.txt
faylidan belgilangan versiyalarini o'rnatadi.
Virtual muhitdan foydalanish bo'yicha eng yaxshi amaliyotlar
Virtual muhitlardan foydalanganda quyidagi eng yaxshi amaliyotlarga rioya qilish kerak:
- Har bir loyiha uchun virtual muhit yarating: Bu har bir loyihaning o'z izolyatsiya qilingan bog'liqliklariga ega bo'lishini ta'minlaydi.
- Talablar faylingizni yangilab turing: Loyihangizning joriy bog'liqliklarini aks ettirish uchun
requirements.txt
faylingizni muntazam ravishda yangilab turing. - Versiya nazoratidan foydalaning: Virtual muhit katalogingizni loyihangizning
.gitignore
fayliga kiritish orqali uni versiya nazoratiga kiritilishini oldini oling. Faqatrequirements.txt
faylini qabul qiling. - Virtual muhitlaringizga izchil nom bering: Chalkashliklarga yo'l qo'ymaslik uchun virtual muhitlaringiz uchun izchil nomlash konventsiyasidan foydalaning. Misol uchun, siz ularga
.venv
yokivenv
deb nom berishingiz mumkin. - Virtual muhit menejeridan foydalaning: Bir nechta virtual muhitlarni boshqarishni soddalashtirish uchun
virtualenvwrapper
yokiconda
kabi virtual muhit menejeridan foydalanishni ko'rib chiqing.
Virtual muhit menejerlari
virtualenv
va venv
virtual muhitlarni yaratish uchun ajoyib vositalar bo'lsa-da, ular bir nechta loyihalar bilan ishlaganda boshqarish qiyin bo'lishi mumkin. Virtual muhit menejerlari virtual muhitlarni boshqarish uchun qo'shimcha xususiyatlar va qulaylikni taqdim etadi.
virtualenvwrapper
virtualenvwrapper
- virtual muhitlarni yaratish, boshqarish va ular bilan ishlashni osonlashtiradigan virtualenv
uchun kengaytmalarning to'plami. U virtual muhitlarni yaratish, faollashtirish, o'chirish va o'chirish, shuningdek, mavjud muhitlarni ro'yxatga olish uchun buyruqlarni taqdim etadi.
virtualenvwrapper
o'rnatish uchun pip-dan foydalaning:
pip install virtualenvwrapper
virtualenvwrapper
o'rnatilishi va ishlatilishi sizning operatsion tizimingizga bog'liq. Batafsil ko'rsatmalar uchun virtualenvwrapper
hujjatlariga qarang.
conda
conda
- bu ochiq kodli paket, bog'liqlik va atrof-muhitni boshqarish tizimi. U ko'pincha ma'lumotlar fanida va ilmiy hisoblashda qo'llaniladi, lekin u umumiy Python dasturlarini ishlab chiqish uchun ham qo'llanilishi mumkin. conda
sizga virtual muhitlarni yaratish va boshqarish, shuningdek, paketlarni o'rnatish va boshqarish imkonini beradi.
conda
o'rnatish uchun Anaconda yoki Miniconda-ni Anaconda veb-saytidan yuklab oling va o'rnating.
Yangi conda muhitini yaratish uchun quyidagi buyruqdan foydalaning:
conda create --name myenv python=3.9
Muhitni faollashtirish uchun:
conda activate myenv
Muhitni o'chirish uchun:
conda deactivate
Conda bog'liqliklar va muhitlarni boshqarish uchun keng qamrovli vositalar to'plamini taklif etadi, bu esa uni murakkab loyihalar uchun mashhur tanlovga aylantiradi.
Global ko'rib chiqishlar va eng yaxshi amaliyotlar
Global jamoalarda ishlashda yoki turli mintaqalarda ilovalarni joylashtirishda ushbu omillarni ko'rib chiqing:
- Izchil Python versiyalari: Barcha jamoa a'zolari ishlab chiqish uchun bir xil Python versiyasidan foydalanishini ta'minlang. Bu integratsiya va joylashtirish paytida kutilmagan moslik muammolarining oldini oladi. Masalan, Tokio, Yaponiya va London, Buyuk Britaniyadagi ishlab chiquvchilar jamoasi bitta Python versiyasiga kelishishi kerak.
- Standartlashtirilgan muhitlar: Turli operatsion tizimlar va infratuzilmalarda izchil ishlab chiqish va joylashtirish muhitlarini yaratish uchun virtual muhitlar bilan bir qatorda Docker yoki Vagrant kabi vositalardan foydalaning. Bu sizning ilovangiz asosiy tizimga qaramay, kutilganidek harakat qilishini kafolatlaydi. MacOS-da ishlab chiqilgan ilovani Linux serveriga joylashtirishni tasavvur qiling; Docker-dan foydalanish izchil xatti-harakatlarni ta'minlaydi.
- Bog'liqlikni mahkamlash:
requirements.txt
faylingizda aniq versiya raqamlaridan foydalaning. Bu hamma bir xil bog'liqlik versiyalaridan foydalanishini ta'minlaydi, turli kutubxona versiyalari tufayli yuzaga kelishi mumkin bo'lgan potentsial xatolarni yumshatadi.requests>=2.0
o'rnigarequests==2.28.1
dan foydalaning. - Platformalararo moslik: Dasturingizni turli operatsion tizimlar (Windows, macOS, Linux) bo'ylab sinab ko'ring, ishlab chiqish jarayonining boshida platformaga xos muammolarni aniqlash va hal qilish. Bulutga asoslangan CI/CD quvurlari turli platformalarda sinovlarni avtomatlashtirishi mumkin.
- Vaqt zonalari: Vaqtga sezgir ma'lumotlar bilan ishlashda izchil vaqt zonasidan (masalan, UTC) foydalaning va vaqt zonalarini tegishli ravishda boshqaring. Mahalliy vaqt zonalarga tayanmang, chunki ular turli mintaqalarda farq qilishi mumkin.
- Belgilarni kodlash: Xalqaro belgilar bilan ishlashni ta'minlash uchun barcha matn fayllari (shu jumladan, manba kodi va konfiguratsiya fayllari) uchun UTF-8 kodlashidan foydalaning.
Umumiy muammolarni bartaraf etish
Virtual muhitlar bilan ishlashda duch kelishingiz mumkin bo'lgan ba'zi umumiy muammolar va ularni qanday hal qilish haqida:
- Faollashtirish muammolari: Agar siz virtual muhitni faollashtirishda qiynalayotgan bo'lsangiz, operatsion tizimingiz va qobig'ingiz uchun to'g'ri faollashtirish skriptidan foydalanayotganingizga ishonch hosil qiling. Faollashtirish skriptiga yo'lni ikki marta tekshiring va uning bajarilishi mumkinligiga ishonch hosil qiling.
- Paketni o'rnatish muammolari: Agar siz paketlarni o'rnatishda qiynalayotgan bo'lsangiz, virtual muhitni faollashtirganingizga va to'g'ri pip versiyasidan foydalanayotganingizga ishonch hosil qiling. Shuningdek, pip-ni eng so'nggi versiyasiga yangilashingiz kerak bo'lishi mumkin.
- Bog'liqlik ziddiyatlari: Agar siz bog'liqlik ziddiyatlariga duch kelsangiz, bog'liqliklaringizni tahlil qilish va ziddiyatli paketlarni aniqlash uchun
pipdeptree
yokipip-tools
dan foydalanib ko'ring. Ziddiyatlarni hal qilish uchun ma'lum paketlarni yangilashingiz yoki pasaytirishingiz kerak bo'lishi mumkin. - Virtual muhitning buzilishi: Agar virtual muhitingiz buzilgan bo'lsa, uni o'chirishga va noldan qayta yaratishga harakat qilishingiz mumkin.
Xulosa
Virtual muhitlar Python ishlab chiquvchilari uchun juda muhim vositadir, u bog'liqliklarni izolyatsiya qilish, versiyalarni boshqarish va loyihalarni takrorlash imkonini beradi. virtualenv
yoki venv
yordamida siz o'z loyihalaringiz bir-biridan izolyatsiya qilinganligiga va global Python o'rnatishingiz toza qolishiga ishonch hosil qilishingiz mumkin. Har bir loyiha uchun bog'liqliklarni osongina takrorlashni osonlashtirish uchun requirements.txt
faylini yaratishni unutmang. Ushbu qo'llanmada ko'rsatilgan eng yaxshi amaliyotlarga amal qilish orqali siz Python-ni ishlab chiqish ish oqimini soddalashtirishingiz va yanada mustahkam va saqlanadigan ilovalarni yaratishingiz mumkin. Global hamkorlik uchun standartlashtirilgan muhitlar va ehtiyotkorlik bilan bog'liqlikni boshqarish muhimdir.