Mundarija (22)
- 1. Kirish va motivatsiya
- 2. Nazariya — chuqur tushuntirish
- 2.1. Nega tizim Pythoniga tegmaslik kerak
- 2.2. externally-managed-environment — nima bu xato
- 2.3. macOS: Homebrew orqali o'rnatish
- 2.4. Linux: to'g'ri usullar
- 2.5. python va python3 — chalkashlik tarixi
- 2.6. PATH tartibi — kim birinchi topiladi
- 2.7. pyenv — bir nechta versiyani boshqarish
- 2.8. O'rnatishni tekshirish
- 3. Tez ma'lumotnoma
- 4. Batafsil misollar
- Misol 1 — Qaysi Pythonlar bor va qaysi biri ishlayapti
- Misol 2 — externally-managed-environment ni ko'rish va to'g'ri hal qilish
- Misol 3 — PATH ni ko'rish va tartibini tushunish
- Misol 4 — Birinchi dastur va tizim ma'lumoti
- 5. To'g'ri va noto'g'ri tushunishlar
- 6. Keng tarqalgan xatolar va yechimlari
- 7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 8. Eng yaxshi amaliyotlar
- 9. Amaliy topshiriq
- Xulosa
2.2-dars: Pythonni o'rnatish — macOS va Linux
2-QISM — MUHIT VA VOSITALAR · 2-dars
1. Kirish va motivatsiya
macOS va Linux'da Python allaqachon o'rnatilgan bo'ladi. Shuning uchun ko'pchilik "demak, hech narsa qilish shart emas" deb o'ylaydi.
Bu — xavfli xato.
Chunki tizimdagi Python sizga tegishli emas. U operatsion tizimning o'ziga kerak. Ubuntu'da apt paket menejeri Python'da yozilgan. macOS'da ham bir qancha tizim vositasi unga tayanadi.
Agar siz o'sha Pythonga kutubxona o'rnatsangiz yoki uni yangilasangiz — tizimni buzishingiz mumkin. Bu shunchalik jiddiy muammoki, zamonaviy Linux distributivlari endi buni umuman taqiqlaydi va externally-managed-environment degan xato chiqaradi.
Bu darsda:
- nega tizim Pythoniga tegmaslik kerakligini tushunasiz
- macOS'da
Homebreworqali o'z Pythonizni o'rnatasiz - Linux'da to'g'ri usulni ko'rasiz
pythonvapython3chalkashligini bir marta va butunlay hal qilasizpyenvbilan tanishasiz — bir nechta versiyani boshqarish vositasi
Eslatma: Windows ishlatasizmi? Bu darsni o'tkazib yuboring — sizga 2.1-dars kerak edi. Lekin 2.5-bo'limni (
pythonvspython3) baribir o'qib qo'ying: onlayn qo'llanmalarni tushunishga yordam beradi.
2. Nazariya — chuqur tushuntirish
2.1. Nega tizim Pythoniga tegmaslik kerak
macOS va Linux'da Python operatsion tizimning bir qismi. Uni quyidagilar ishlatadi:
Linux (Ubuntu/Debian):
apt— paket menejeriufw— xavfsizlik devori- tizim sozlash vositalari
macOS:
- bir qancha ichki xizmat va vosita
Endi tasavvur qiling: siz pip install bilan biror kutubxonaning eski versiyasini o'rnatdingiz, u esa apt ishlatadigan kutubxonaning yangi versiyasini almashtirib qo'ydi.
Natija: apt ishlamay qoladi. Va uni tuzatish uchun ham apt kerak. Bu — klassik "o'zini qopqonga solish" holati.
Yechim uch qatlamli:
| Qatlam | Nima | Nimaga |
|---|---|---|
| Tizim Pythoni | OT bilan keladi | Tegmang |
| Sizning Pythoningiz | Homebrew / pyenv / deadsnakes | Ish uchun |
Virtual muhit (venv) |
Har loyiha uchun alohida | Loyihalar bir-biriga xalaqit bermasin |
Bu darsda ikkinchi qatlamni o'rnatamiz. Uchinchi qatlamni 18-qismda batafsil o'rganamiz.
2.2. externally-managed-environment — nima bu xato
Zamonaviy Linux'da (Ubuntu 23.04+, Debian 12+, Fedora 38+) tizim Pythoniga pip install qilsangiz:
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.Bu — xato emas, himoya. Tizim sizni 2.1-bo'limdagi falokatdan saqlayapti.
Ko'pchilik internetdan --break-system-packages bayrog'ini topib, uni qo'shadi. Bu — bayroqning nomi aynan aytganini qiladi. Ishlatmang.
To'g'ri javob: virtual muhit yarating yoki o'z Pythoningizni o'rnating.
2.3. macOS: Homebrew orqali o'rnatish
Homebrew — macOS uchun paket menejeri. U dasturlarni buyruq satridan o'rnatadi.
1-qadam: Homebrew o'rnatish (agar yo'q bo'lsa)
Terminalni oching (Cmd + Space → "Terminal") va tekshiring:
brew --versionAgar command not found chiqsa, brew.sh saytidagi rasmiy buyruqni ishlating. Sayt bitta qatorni beradi — uni nusxalab, terminalga qo'ying.
Ogohlantirish: internetdan topilgan skriptni ko'r-ko'rona ishga tushirmang. Faqat rasmiy saytdan oling. Bu — 1.7-darsdagi xavfsizlik qoidasi.
2-qadam: Pythonni o'rnatish
brew install python@3.123-qadam: tekshirish
python3 --versionPython 3.12.7Homebrew Pythonni /opt/homebrew/bin/ (Apple Silicon) yoki /usr/local/bin/ (Intel) ga o'rnatadi va PATH ga qo'shadi.
Qaysi Python ishlayotganini tekshirish:
which python3/opt/homebrew/bin/python3 ← yaxshi, HomebrewAgar quyidagicha bo'lsa:
/usr/bin/python3 ← tizim Pythoni— PATH tartibi noto'g'ri. 2.6-bo'limga qarang.
2.4. Linux: to'g'ri usullar
Ubuntu / Debian
Tizimda Python allaqachon bor. Tekshiring:
python3 --versionAgar 3.10 yoki undan yangi bo'lsa — bu kurs uchun yetarli. Faqat ikki qo'shimcha paket kerak:
sudo apt update
sudo apt install python3-pip python3-venvpython3-pip— kutubxona o'rnatish vositasipython3-venv— virtual muhit yaratish (Debian'da alohida paket)
Yangiroq versiya kerak bo'lsa (masalan, tizimda 3.8, sizga 3.12 kerak) — deadsnakes omborini qo'shing:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.12 python3.12-venvEndi ikkala versiya yonma-yon turadi:
python3 --version # tizimniki, masalan 3.8
python3.12 --version # yangi o'rnatilganiFedora / RHEL
sudo dnf install python3.12 python3-pipArch Linux
sudo pacman -S python python-pipArch doim eng so'nggi versiyani beradi.
2.5. python va python3 — chalkashlik tarixi
Bu — boshlovchilarni eng ko'p adashtiradigan narsa.
Nima bo'lgan? 1.7-darsda aytganimizdek, Python 2 dan 3 ga o'tish 12 yil davom etdi. O'sha davrda ikkala versiya bir kompyuterda yonma-yon turishi kerak edi. Kelishuv shunday bo'ldi:
python → Python 2
python3 → Python 3Endi Python 2 yo'q. Lekin nom qoldi:
| Tizim | python |
python3 |
|---|---|---|
| macOS (tizim) | yo'q | 3.x bor |
| Ubuntu 22.04+ | yo'q (yoki python-is-python3 orqali) |
3.x |
| Homebrew | python3 ga havola |
3.x |
| Windows (python.org) | 3.x | 3.x |
| Virtual muhit ichida | 3.x — doim | 3.x |
Amaliy qoida:
macOS va Linux'da doim
python3vapip3yozing — virtual muhit ichida bo'lmasangiz.
Virtual muhitni faollashtirgandan keyin (18-qism) python ham to'g'ri ishlaydi. Aynan shu — venv ning yana bir foydasi.
Ubuntu'da python ni ishlatmoqchi bo'lsangiz:
sudo apt install python-is-python3Bu python ni python3 ga bog'laydi. Qulay, lekin majburiy emas.
2.6. PATH tartibi — kim birinchi topiladi
1.8-darsda o'rgandik: OT PATH ni yuqoridan pastga ko'radi va birinchi topilganini ishlatadi.
macOS'da PATH odatda shunday:
/opt/homebrew/bin ← Homebrew (Apple Silicon)
/usr/local/bin ← Homebrew (Intel) va qo'lda o'rnatilganlar
/usr/bin ← tizim dasturlari
/bin
/usr/sbin
/sbinHomebrew birinchi bo'lgani uchun python3 deb yozganingizda Homebrew versiyasi ishlaydi. To'g'ri.
Agar tartib buzilgan bo'lsa, qobiq sozlama faylini tahrirlang:
# zsh uchun (macOS'da sukut bo'yicha)
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# bash uchun
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc$PATH ning oldiga qo'shish muhim — shunda u birinchi qidiriladi.
Tekshirish:
echo $PATH | tr ':' '\n' | head -52.7. pyenv — bir nechta versiyani boshqarish
Agar bir vaqtda bir nechta Python versiyasi kerak bo'lsa (masalan, bir loyiha 3.9 da, boshqasi 3.12 da), pyenv eng qulay vosita.
# macOS
brew install pyenv
# Linux — pyenv-installer orqali (rasmiy hujjatga qarang)Ishlatilishi:
pyenv install 3.12.7 # versiyani o'rnatish
pyenv install 3.11.9 # yana bittasi
pyenv versions # o'rnatilganlar ro'yxati
pyenv global 3.12.7 # butun tizim uchun sukut
pyenv local 3.11.9 # FAQAT shu papka uchunpyenv local papkaga .python-version degan kichik fayl yozadi. Shu papkaga kirganingizda pyenv avtomatik to'g'ri versiyaga o'tadi.
Bu — Windows'dagi py -3.12 ning kuchliroq varianti.
Boshlovchiga kerakmi? Yo'q. Bitta versiya yetarli. Lekin
pyenvmavjudligini bilib qo'ying — bir necha oydan keyin kerak bo'ladi.
2.8. O'rnatishni tekshirish
python3 --versionPython 3.12.7python3 -m pip --versionpip 24.2 from /opt/homebrew/lib/python3.12/site-packages/pip (python 3.12)python3 -m venv --helpUchinchisi xato bermasa — venv mavjud (Debian/Ubuntu'da bu alohida paket edi).
which python3Javob tizim yo'li (/usr/bin/python3) emas, o'zingiznikini ko'rsatsa — hammasi joyida.
3. Tez ma'lumotnoma
macOS
brew install python@3.12
python3 --version
which python3 # /opt/homebrew/bin/python3 bo'lishi kerakUbuntu / Debian
sudo apt update
sudo apt install python3-pip python3-venv
# yangiroq versiya kerak bo'lsa:
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.12 python3.12-venvTekshirish
python3 --version
python3 -m pip --version
python3 -m venv --help
which python3Asosiy qoida
macOS/Linux'da doim: python3, pip3 (yoki python3 -m pip)
Tizim Pythoniga pip install QILMANG — venv ishlating4. Batafsil misollar
Misol 1 — Qaysi Pythonlar bor va qaysi biri ishlayapti
which -a python3/opt/homebrew/bin/python3
/usr/bin/python3-a — barcha topilganlarni ko'rsatadi. Birinchisi ishlatiladi.
python3 -c "import sys; print(sys.executable)"/opt/homebrew/opt/python@3.12/bin/python3.12E'tibor bering: which havolani ko'rsatdi, sys.executable esa haqiqiy faylni.
/usr/bin/python3 --version # tizimnikini aniq chaqirishPython 3.9.6Nima ko'rsatdi: 2.3 va 2.6-bo'limlar. Ikki Python yonma-yon turibdi va PATH tartibi qaysi biri ishlashini hal qiladi.
Misol 2 — externally-managed-environment ni ko'rish va to'g'ri hal qilish
Ubuntu 24.04 da:
/usr/bin/python3 -m pip install requestserror: externally-managed-environmentNoto'g'ri yechim (ishlatmang):
pip install requests --break-system-packagesTo'g'ri yechim:
python3 -m venv muhit # virtual muhit yaratish
source muhit/bin/activate # faollashtirish
pip install requests # endi xavfsizFaollashtirgandan keyin terminal ko'rinishi o'zgaradi:
(muhit) siz@kompyuter:~$Chiqish:
deactivateNima ko'rsatdi: 2.1 va 2.2-bo'limlar. Bu — 18-qismning oldindan ko'rinishi.
Misol 3 — PATH ni ko'rish va tartibini tushunish
echo $PATH | tr ':' '\n'/opt/homebrew/bin
/opt/homebrew/sbin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbintr ':' '\n' — ikki nuqtalarni qator tashlashga almashtiradi, o'qish osonlashadi.
Faqat Pythonga tegishlilarini ko'rish:
echo $PATH | tr ':' '\n' | grep -i pythonPython qaysi papkalarda borligini ko'rish:
ls -la /opt/homebrew/bin/python*python3 -> ../Cellar/python@3.12/3.12.7/bin/python3
python3.12 -> ../Cellar/python@3.12/3.12.7/bin/python3.12-> — bu ramziy havola (symlink). python3 haqiqiy fayl emas, u boshqa faylga ishora qiladi.
Nima ko'rsatdi: 2.6-bo'lim va 1.8-darsdagi PATH.
Misol 4 — Birinchi dastur va tizim ma'lumoti
salom.py faylini yarating:
import sys
import platform
print("Salom, dunyo!")
print("Python:", platform.python_version())
print("Tizim:", platform.system(), platform.release())
print("Protsessor:", platform.machine())
print("Yo'l:", sys.executable)Ishga tushirish:
python3 salom.pymacOS'da (Apple Silicon):
Salom, dunyo!
Python: 3.12.7
Tizim: Darwin 23.6.0
Protsessor: arm64
Yo'l: /opt/homebrew/opt/python@3.12/bin/python3.12Ubuntu'da:
Salom, dunyo!
Python: 3.12.3
Tizim: Linux 6.8.0-45-generic
Protsessor: x86_64
Yo'l: /usr/bin/python3Qiziq: macOS'da tizim nomi
Darwin— bu macOS ning ochiq manbali yadrosi.
Nima ko'rsatdi: 2.8-bo'lim va 1.8-darsdagi to'liq zanjir.
5. To'g'ri va noto'g'ri tushunishlar
| Noto'g'ri fikr | To'g'risi |
|---|---|
| "Python allaqachon bor, hech narsa kerak emas" | Tizim Pythoni OT uchun. Ish uchun o'zingiznikini o'rnating |
"--break-system-packages — tez yechim" |
Bayroq nomi rostini aytadi. venv ishlating |
"python va python3 bir xil" |
macOS/Linux'da python ko'pincha umuman yo'q |
"sudo pip install ishonchli" |
Aksincha — tizimni buzishning eng tez yo'li |
"which python3 haqiqiy faylni ko'rsatadi" |
Odatda symlink'ni. Haqiqiysi — sys.executable |
| "Bitta Python versiyasi yetarli" | Boshida — ha. Keyinroq pyenv kerak bo'ladi |
"venv — murakkab narsa" |
Ikkita buyruq. Va u ko'p muammoni oldini oladi |
6. Keng tarqalgan xatolar va yechimlari
1. externally-managed-environment
Sabab: tizim Pythoniga paket o'rnatishga urinyapsiz.
Yechim: python3 -m venv muhit && source muhit/bin/activate. --break-system-packages ishlatmang.
2. python: command not found, lekin python3 ishlaydi
Sabab: bu — normal holat (2.5-bo'lim).
Yechim: python3 yozing. Yoki Ubuntu'da sudo apt install python-is-python3.
3. No module named venv (Debian/Ubuntu)
Sabab: Debian venv ni asosiy paketdan ajratgan.
Yechim: sudo apt install python3-venv yoki aniq versiya uchun sudo apt install python3.12-venv.
4. brew install dan keyin ham eski versiya ishlaydi
Sabab: PATH tartibi yoki terminal eski holatni eslab qolgan.
Yechim:
hash -r # qobiqning keshini tozalash
exec $SHELL # yoki terminalni yangidan ochish
which -a python3 # tartibni tekshirish5. macOS: xcrun: error: invalid active developer path
Sabab: buyruq satri vositalari o'rnatilmagan.
Yechim: xcode-select --install
6. Permission denied — sudo bilan hal qilishga urinish
Sabab: tizim papkasiga yozishga urinyapsiz.
Yechim: sudo ishlatmang. Virtual muhit yarating yoki pip install --user qiling. sudo pip — muammoni kechiktiradi, hal qilmaydi.
7. Integratsiya — bu bilim qayerda kerak bo'ladi
- 2.3-dars: PATH ni chuqur o'rganish
- 2.4-dars: terminal buyruqlari —
cd,ls,which - 18-qism:
venvvapipbatafsil — bu darsdagi eng muhim davomi - 18-qism:
pyenv,poetry,uv— zamonaviy vositalar - 28-qism: Docker — muhitni butunlay izolyatsiya qilish
- Server ishlarida: deploy paytida to'g'ri Pythonni tanlash
8. Eng yaxshi amaliyotlar
Tizim Pythoniga hech qachon paket o'rnatmang. Bu qoidani buzmaslik sizni ko'p soatlik tuzatishdan qutqaradi.
Har loyiha uchun
venv. Bu — universal qoida. 18-qismda o'rganamiz, lekin hozirdan odat qiling.pipo'rnigapython3 -m pip. Aynan kerakli Pythonning pip'i ishlashiga kafolat.which -a python3bilan tekshiring. Muammo bo'lsa, birinchi qarash shu yerga.sudo pip— hech qachon. Agar ruxsat kerak bo'lsa, demak noto'g'ri joyga o'rnatyapsiz.pyenvni bilib qo'ying. Hozir kerak emas, keyin juda kerak bo'ladi.
9. Amaliy topshiriq
Vazifa 1: O'rnatish
Tizimingizga qarab:
- macOS:
brew install python@3.12 - Ubuntu/Debian:
sudo apt install python3-pip python3-venv - Fedora:
sudo dnf install python3 python3-pip
Vazifa 2: To'rt tekshiruv
python3 --version
python3 -m pip --version
python3 -m venv --help
which -a python3Hammasi ishladimi? Oxirgisi nechta yo'l ko'rsatdi?
Vazifa 3: Ikki Pythonni solishtirish
Agar which -a python3 ikkitadan ko'p yo'l ko'rsatgan bo'lsa:
/usr/bin/python3 --version
python3 --versionUlar farq qiladimi? Qaysi biri ishlayapti va nega? (Javob — 2.6-bo'limda.)
Vazifa 4: Virtual muhitni sinash
python3 -m venv sinov
source sinov/bin/activate
python --version # DIQQAT: python3 emas, python
which python
deactivate
rm -rf sinovSavol: muhit ichida python nega ishladi?
Javob
venv o'z papkasidagi bin/ ni PATH ning boshiga qo'yadi. U yerda esa python nomli symlink bor. Shuning uchun muhit ichida python va python3 — ikkalasi ham ishlaydi va ikkalasi ham to'g'ri versiyani ko'rsatadi.
Bu — 1.8-darsdagi PATH mexanizmining amaliy qo'llanishi. venv sehr emas, u shunchaki PATH ni o'zgartiradi.
Vazifa 5: Birinchi dastur
4-misoldagi salom.py ni yarating va ishga tushiring. Natijani yozing:
- Tizim nomi nima?
- Protsessor turi qanday?
- Python qaysi yo'lda?
Vazifa 6: O'ylash
Nega Ubuntu externally-managed-environment xatosini kiritdi? Nima bo'lardi agar u bo'lmasa?
Javob
Bu xato 2023-yilda (PEP 668) kiritildi, chunki foydalanuvchilar sudo pip install bilan tizimni buzib, keyin distributiv ishlab chiquvchilariga shikoyat qilardi.
Bo'lmasa nima bo'lardi: pip apt o'rnatgan kutubxonani almashtiradi → apt ishlamay qoladi → tizimni tuzatish uchun apt kerak, lekin u buzilgan → faqat qayta o'rnatish qoladi.
Bu — 1.7-darsdagi "bog'liqlik jahannami" ning eng og'ir ko'rinishi.
Nimani mustahkamlaydi: 2.1, 2.2, 2.5, 2.6, 2.8-bo'limlar.
Xulosa
Bu darsda macOS va Linux'da Pythonni to'g'ri o'rnatdik.
Eng muhim uch fikr:
Tizim Pythoni sizga tegishli emas. U operatsion tizimga kerak. O'zingizniki alohida bo'lsin — macOS'da Homebrew, Linux'da
deadsnakesyoki tizimniki +venv.externally-managed-environment— himoya, xato emas. To'g'ri javob — virtual muhit,--break-system-packagesemas.python3yozing.pythonnomi Python 2 davridan qolgan tarixiy chalkashlik. Virtual muhit ichida bu farq yo'qoladi.
Keyingi darsda PATH ni chuqur o'rganamiz: u qanday tuzilgan, qanday o'zgartiriladi va nega u eng ko'p muammo keltiradi. Bu dars ikkala tizim uchun ham — Windows ham, macOS/Linux ham.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!