IlmHamroh
Python kursi/Muhit va vositalar2/9-dars12 daqiqa
Mundarija (22)

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 Homebrew orqali o'z Pythonizni o'rnatasiz
  • Linux'da to'g'ri usulni ko'rasiz
  • python va python3 chalkashligini bir marta va butunlay hal qilasiz
  • pyenv bilan 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 (python vs python3) 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 menejeri
  • ufw — 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:

text
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:

bash
brew --version

Agar 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

bash
brew install python@3.12

3-qadam: tekshirish

bash
python3 --version
text
Python 3.12.7

Homebrew Pythonni /opt/homebrew/bin/ (Apple Silicon) yoki /usr/local/bin/ (Intel) ga o'rnatadi va PATH ga qo'shadi.

Qaysi Python ishlayotganini tekshirish:

bash
which python3
text
/opt/homebrew/bin/python3      ← yaxshi, Homebrew

Agar quyidagicha bo'lsa:

text
/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:

bash
python3 --version

Agar 3.10 yoki undan yangi bo'lsa — bu kurs uchun yetarli. Faqat ikki qo'shimcha paket kerak:

bash
sudo apt update
sudo apt install python3-pip python3-venv
  • python3-pip — kutubxona o'rnatish vositasi
  • python3-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:

bash
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.12 python3.12-venv

Endi ikkala versiya yonma-yon turadi:

bash
python3 --version      # tizimniki, masalan 3.8
python3.12 --version   # yangi o'rnatilgani

Fedora / RHEL

bash
sudo dnf install python3.12 python3-pip

Arch Linux

bash
sudo pacman -S python python-pip

Arch 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:

text
python   →  Python 2
python3  →  Python 3

Endi 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 python3 va pip3 yozing — 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:

bash
sudo apt install python-is-python3

Bu 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:

text
/opt/homebrew/bin      ← Homebrew (Apple Silicon)
/usr/local/bin         ← Homebrew (Intel) va qo'lda o'rnatilganlar
/usr/bin               ← tizim dasturlari
/bin
/usr/sbin
/sbin

Homebrew birinchi bo'lgani uchun python3 deb yozganingizda Homebrew versiyasi ishlaydi. To'g'ri.

Agar tartib buzilgan bo'lsa, qobiq sozlama faylini tahrirlang:

bash
# 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:

bash
echo $PATH | tr ':' '\n' | head -5

2.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.

bash
# macOS
brew install pyenv

# Linux — pyenv-installer orqali (rasmiy hujjatga qarang)

Ishlatilishi:

bash
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 uchun

pyenv 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 pyenv mavjudligini bilib qo'ying — bir necha oydan keyin kerak bo'ladi.

2.8. O'rnatishni tekshirish

bash
python3 --version
text
Python 3.12.7
bash
python3 -m pip --version
text
pip 24.2 from /opt/homebrew/lib/python3.12/site-packages/pip (python 3.12)
bash
python3 -m venv --help

Uchinchisi xato bermasa — venv mavjud (Debian/Ubuntu'da bu alohida paket edi).

bash
which python3

Javob tizim yo'li (/usr/bin/python3) emas, o'zingiznikini ko'rsatsa — hammasi joyida.


3. Tez ma'lumotnoma

macOS

bash
brew install python@3.12
python3 --version
which python3                 # /opt/homebrew/bin/python3 bo'lishi kerak

Ubuntu / Debian

bash
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-venv

Tekshirish

bash
python3 --version
python3 -m pip --version
python3 -m venv --help
which python3

Asosiy qoida

text
macOS/Linux'da doim: python3, pip3  (yoki python3 -m pip)
Tizim Pythoniga pip install QILMANG — venv ishlating

4. Batafsil misollar

Misol 1 — Qaysi Pythonlar bor va qaysi biri ishlayapti

bash
which -a python3
text
/opt/homebrew/bin/python3
/usr/bin/python3

-a — barcha topilganlarni ko'rsatadi. Birinchisi ishlatiladi.

bash
python3 -c "import sys; print(sys.executable)"
text
/opt/homebrew/opt/python@3.12/bin/python3.12

E'tibor bering: which havolani ko'rsatdi, sys.executable esa haqiqiy faylni.

bash
/usr/bin/python3 --version      # tizimnikini aniq chaqirish
text
Python 3.9.6

Nima 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:

bash
/usr/bin/python3 -m pip install requests
text
error: externally-managed-environment

Noto'g'ri yechim (ishlatmang):

bash
pip install requests --break-system-packages

To'g'ri yechim:

bash
python3 -m venv muhit          # virtual muhit yaratish
source muhit/bin/activate      # faollashtirish
pip install requests           # endi xavfsiz

Faollashtirgandan keyin terminal ko'rinishi o'zgaradi:

text
(muhit) siz@kompyuter:~$

Chiqish:

bash
deactivate

Nima ko'rsatdi: 2.1 va 2.2-bo'limlar. Bu — 18-qismning oldindan ko'rinishi.

Misol 3 — PATH ni ko'rish va tartibini tushunish

bash
echo $PATH | tr ':' '\n'
text
/opt/homebrew/bin
/opt/homebrew/sbin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

tr ':' '\n' — ikki nuqtalarni qator tashlashga almashtiradi, o'qish osonlashadi.

Faqat Pythonga tegishlilarini ko'rish:

bash
echo $PATH | tr ':' '\n' | grep -i python

Python qaysi papkalarda borligini ko'rish:

bash
ls -la /opt/homebrew/bin/python*
text
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:

python
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:

bash
python3 salom.py

macOS'da (Apple Silicon):

text
Salom, dunyo!
Python: 3.12.7
Tizim: Darwin 23.6.0
Protsessor: arm64
Yo'l: /opt/homebrew/opt/python@3.12/bin/python3.12

Ubuntu'da:

text
Salom, dunyo!
Python: 3.12.3
Tizim: Linux 6.8.0-45-generic
Protsessor: x86_64
Yo'l: /usr/bin/python3

Qiziq: 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:

bash
hash -r              # qobiqning keshini tozalash
exec $SHELL          # yoki terminalni yangidan ochish
which -a python3     # tartibni tekshirish

5. 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: venv va pip batafsil — 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

  1. Tizim Pythoniga hech qachon paket o'rnatmang. Bu qoidani buzmaslik sizni ko'p soatlik tuzatishdan qutqaradi.

  2. Har loyiha uchun venv. Bu — universal qoida. 18-qismda o'rganamiz, lekin hozirdan odat qiling.

  3. pip o'rniga python3 -m pip. Aynan kerakli Pythonning pip'i ishlashiga kafolat.

  4. which -a python3 bilan tekshiring. Muammo bo'lsa, birinchi qarash shu yerga.

  5. sudo pip — hech qachon. Agar ruxsat kerak bo'lsa, demak noto'g'ri joyga o'rnatyapsiz.

  6. pyenv ni 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

bash
python3 --version
python3 -m pip --version
python3 -m venv --help
which -a python3

Hammasi 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:

bash
/usr/bin/python3 --version
python3 --version

Ular farq qiladimi? Qaysi biri ishlayapti va nega? (Javob — 2.6-bo'limda.)

Vazifa 4: Virtual muhitni sinash

bash
python3 -m venv sinov
source sinov/bin/activate
python --version          # DIQQAT: python3 emas, python
which python
deactivate
rm -rf sinov

Savol: 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:

  1. Tizim nomi nima?
  2. Protsessor turi qanday?
  3. 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:

  1. Tizim Pythoni sizga tegishli emas. U operatsion tizimga kerak. O'zingizniki alohida bo'lsin — macOS'da Homebrew, Linux'da deadsnakes yoki tizimniki + venv.

  2. externally-managed-environment — himoya, xato emas. To'g'ri javob — virtual muhit, --break-system-packages emas.

  3. python3 yozing. python nomi 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.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
2.2-dars: Pythonni o'rnatish — macOS va Linux — IlmHamroh