IlmHamroh
Python kursi/Kompyuter va dasturlash7/8-dars14 daqiqa
Mundarija (23)

1.7-dars: Python ekotizimi — versiyalar, PyPI va jamoa

1-QISM — KOMPYUTER VA DASTURLASH · 7-dars · Oldingi dars: Python qayerda ishlatiladi


1. Kirish va motivatsiya

Tilning kuchi faqat sintaksisda emas. Ko'p hollarda uning atrofidagi ekotizim muhimroq.

Tasavvur qiling: sizga sayt ma'lumotini yig'ish kerak. Ikki yo'l bor:

  1. HTTP protokolini o'zingiz amalga oshirasiz, HTML tahlilchisini yozasiz — bir necha hafta
  2. pip install requests beautifulsoup4 deb yozasiz — bir necha soniya

Farq shu. Va aynan shu farq Pythonni bugungi holatga olib kelgan.

Lekin bu qulaylikning narxi ham bor: 500 000 paket orasidan qaysi birini tanlash? Ular xavfsizmi? Versiya nima uchun muhim?

Bu darsni tugatgach:

  • Python versiyalari qanday chiqishini va qaysi birini tanlashni bilasiz
  • PyPI nima va pip install aslida nima qilishini tushunasiz
  • Yaxshi kutubxonani yomonidan ajrata olasiz — aniq mezonlar bilan
  • Bog'liqliklar bilan bog'liq eng keng tarqalgan muammoni va uning yechimini bilasiz
  • Python jamoasi qanday ishlashini va yordamni qayerdan olishni bilasiz

Bu dars amaliy xavfsizlik haqida ham: pip install — bu begona kodni kompyuteringizda ishga tushirish. Buni tushunmasdan ishlatish xavfli.


2. Nazariya — chuqur tushuntirish

2.1. Versiya raqamlari nimani anglatadi

Python versiyalari uch qismdan iborat:

text
3 . 12 . 4
│    │   │
│    │   └── Patch — faqat xato tuzatish
│    └────── Minor — yangi imkoniyatlar
└─────────── Major — orqaga moslikni buzish mumkin

Patch (3.12.3 → 3.12.4): faqat xato va xavfsizlik tuzatishlari. Yangilanish xavfsiz, hech narsa buzilmaydi.

Minor (3.11 → 3.12): yangi imkoniyatlar qo'shiladi, eskisi ishlashda davom etadi. Odatda xavfsiz, lekin sinash tavsiya etiladi.

Major (2 → 3): orqaga moslik buzilishi mumkin. 3-darsda ko'rganimizdek, bu bir marta sodir bo'lgan va og'riqli kechgan.

Muhim: Python 4 bo'ladimi? Guido va jamoa "yo'q" deb aytishgan. Python 3 dagi saboqdan keyin ular orqaga moslikni buzadigan katta sakrash qilmaslikka qaror qilishgan. Yangi imkoniyatlar 3.13, 3.14 tarzida kelaveradi.

2.2. Chiqarish jadvali

Python har yili oktyabr oyida yangi minor versiya chiqaradi. Bu PEP 602 bilan belgilangan.

Har bir versiya 5 yil qo'llab-quvvatlanadi:

text
1-yil:      Xato tuzatish + xavfsizlik
2-5 yil:    Faqat xavfsizlik tuzatishlari
5 yildan keyin: Qo'llab-quvvatlash tugaydi (EOL)

Taxminiy holat (2026-yil):

Versiya Chiqqan Qo'llab-quvvatlash tugaydi Holat
3.9 2020 2025 Tugagan
3.10 2021 2026 Tugayapti
3.11 2022 2027 Xavfsizlik
3.12 2023 2028 Barqaror
3.13 2024 2029 Yangi

Qaysi versiyani tanlash kerak?

Oddiy qoida: eng yangisidan bittasi oldingi.

Nega eng yangisi emas? Chunki kutubxonalar unga darhol moslashmaydi. Yangi versiya chiqqanda numpy yoki pandas bir necha oy kutishi mumkin.

Bu kursda Python 3.12 ishlatiladi — barqaror, keng qo'llab-quvvatlanadi va zamonaviy imkoniyatlarga ega.

2.3. Standart kutubxona — "batareyalar ichida"

Pythonning shiorlaridan biri — "batteries included" (batareyalar ichida). Ma'nosi: ko'p narsa hech nima o'rnatmasdan ishlaydi.

Standart kutubxonada 200 dan ortiq modul bor:

Modul Nima uchun
os, pathlib Fayl va papkalar
json, csv Ma'lumot formatlari
datetime Sana va vaqt
re Muntazam ifodalar
math, random Matematika
sqlite3 Ma'lumotlar bazasi
http, urllib Tarmoq
unittest Testlash
logging Jurnal yuritish

Bu — Pythonning katta ustunligi. Kichik vazifa uchun ko'pincha hech narsa o'rnatish shart emas.

Standart kutubxonani 15 va 16-qismlarda batafsil o'rganamiz.

2.4. PyPI — paketlar ombori

PyPI (Python Package Index, "pay-pee-ay" deb o'qiladi) — Python paketlarining markaziy ombori. Manzili: pypi.org.

Raqamlar:

  • 500 000 dan ortiq loyiha
  • Har kuni yuzlab yangi versiya chiqadi
  • Deyarli har vazifaga tayyor yechim bor

pip install requests deb yozganingizda:

text
1. pip PyPI'ga so'rov yuboradi: "requests bormi?"
2. Mos versiyani topadi (Python versiyangizga qarab)
3. Faylni yuklab oladi
4. Uning BOG'LIQLIKLARINI ham yuklaydi
5. Hammasini kompyuteringizga o'rnatadi

Diqqat 4-qadamga: requests o'zi ham boshqa paketlarga tayanadi. Bitta buyruq bilan bir necha paket o'rnatilishi mumkin.

2.5. pip install — xavfsizlik haqida ochiq gap

Bu bo'limni jiddiy o'qing.

pip install — bu internetdan begona kodni yuklab, kompyuteringizda ishga tushirish.

PyPI'ga har kim paket yuklashi mumkin. Oldindan tekshiruv yo'q. Bu ochiqlik ekotizimni o'stirgan, lekin xavf ham tug'diradi.

Keng tarqalgan hujum turlari:

1. Typosquatting — mashhur paket nomiga o'xshash nom qo'yish:

text
requests   ← haqiqiy
reqeusts   ← soxta (harflar joyi almashgan)
request    ← soxta ("s" yo'q)

Adashib yozsangiz — zararli kod o'rnatiladi.

2. Bog'liqlik zanjiri. Siz ishonchli paket o'rnatasiz, lekin u boshqa 20 ta paketga tayanadi. Ulardan biri buzilgan bo'lishi mumkin.

3. Egalik o'zgarishi. Paket muallifi loyihani boshqa odamga bergan, yangi egasi zararli kod qo'shgan.

Himoya qoidalari:

Qoida Nega
Nomni diqqat bilan yozing Typosquatting'dan himoya
PyPI sahifasini tekshiring Yuklab olishlar soni, oxirgi yangilanish, GitHub havolasi
Virtual muhit ishlating Zarar butun tizimga tarqalmaydi
Versiyani qotiring requests==2.31.0 — kutilmagan yangilanish bo'lmaydi
requirements.txt yuriting Kim nima o'rnatganini bilib turasiz
Kam ma'lum paketni tekshiring GitHub'da koddan o'ting

Virtual muhit va bog'liqliklarni 18-qismda batafsil o'rganamiz. Hozircha shuni eslab qoling: sudo pip install hech qachon yozmang — bu tizim darajasida o'rnatadi va eng xavfli usul.

2.6. Yaxshi kutubxonani tanlash mezonlari

500 000 paket orasidan qanday tanlash kerak? Mana amaliy mezonlar:

1. Oxirgi yangilanish sanasi. Ikki yildan beri yangilanmagan paket — ehtiyot bo'ling. Til o'zgaradi, xavfsizlik zaifliklari topiladi.

2. Yuklab olishlar soni. PyPI sahifasida ko'rinadi. Oyiga million marta yuklanadigan paket — sinovdan o'tgan.

3. GitHub faolligi.

  • Yulduzlar soni (mashhurlik)
  • Ochiq muammolar (issues) — ko'p bo'lsa yomon emas, lekin javobsiz bo'lsa yomon
  • Oxirgi commit qachon

4. Hujjatlar. Yaxshi hujjatsiz paket — kelajakdagi og'riq.

5. Litsenziya. MIT, Apache, BSD — erkin. GPL — cheklovlar bor (tijorat loyihada ehtiyot bo'ling).

6. Bog'liqliklar soni. Kam bog'liqlik — kam xavf va kam muammo.

Amaliy maslahat: shubha bo'lsa, eng mashhurini tanlang. Pythonda odatda har sohada bitta aniq yetakchi bor:

Vazifa Standart tanlov
HTTP so'rovlar requests yoki httpx
Jadval ma'lumot pandas
Massiv va matematika numpy
Test pytest
Web API fastapi
Ma'lumot validatsiyasi pydantic
ORM sqlalchemy

2.7. Bog'liqlik do'zaxi va virtual muhit

Bu — boshlovchilar duch keladigan eng chalkash muammo.

Vaziyat: ikkita loyihangiz bor.

  • Loyiha A pandas 1.5 talab qiladi
  • Loyiha B pandas 2.1 talab qiladi

Agar ikkalasini ham tizimga o'rnatsangiz — konflikt. Bittasi ishlaydi, ikkinchisi buziladi.

Yechim: virtual muhit (virtual environment).

Har bir loyiha uchun alohida, izolyatsiya qilingan Python muhiti yaratiladi:

text
loyiha-A/
├── .venv/              ← A ning o'z paketlari (pandas 1.5)
└── main.py

loyiha-B/
├── .venv/              ← B ning o'z paketlari (pandas 2.1)
└── main.py

Ular bir-biriga xalaqit qilmaydi.

Bu majburiy amaliyot. Har bir Python loyihasi o'z virtual muhitiga ega bo'lishi kerak. Buni 2-qismda o'rnatish paytida va 18-qismda chuqur o'rganamiz.

2.8. Jamoa va yordam olish

Python jamoasi dasturlash dunyosidagi eng katta va do'stona jamoalardan biri.

Yordam qayerdan olinadi:

Manba Nima uchun Ishonchlilik
docs.python.org Rasmiy hujjat Eng yuqori
Kutubxona hujjati Har paketning o'z sayti Yuqori
Stack Overflow Aniq savol-javob O'rtacha (sanaga qarang)
GitHub Issues Xato va muammolar Yuqori
Reddit r/learnpython Boshlovchilar uchun O'rtacha

Rasmiy hujjatni o'qishni o'rganing. Boshlovchilar ko'pincha undan qo'rqadi va darhol Stack Overflow'ga yuguradi. Lekin rasmiy hujjat:

  • Har doim to'g'ri va eng yangi
  • Barcha imkoniyatni ko'rsatadi, faqat bittasini emas
  • Misollar bilan

Bu ko'nikma vaqt talab qiladi, lekin qaytimi katta.

Savol berish madaniyati: yaxshi savol — bu (1) nima qilmoqchi ekaningiz, (2) nima qilganingiz, (3) nima kutganingiz, (4) nima bo'lgani, (5) minimal takrorlanadigan kod. Shunday savolga tez javob olasiz.

2.9. Ekotizimning kuchli va zaif tomonlari

Kuchli:

  • Deyarli har vazifaga tayyor yechim
  • Sifatli, sinovdan o'tgan yetakchi kutubxonalar
  • Katta jamoa — muammoingiz allaqachon kimdadir bo'lgan
  • Bepul va ochiq

Zaif:

  • Sifat bir xil emas — yaxshi va tashlandiq paketlar yonma-yon
  • Bog'liqlik zanjirlari uzun bo'lishi mumkin
  • Xavfsizlik xavfi (2.5-bo'lim)
  • Tanlov ko'pligi boshlovchini chalkashtiradi

Amaliy yondashuv: yetakchi kutubxonalardan foydalaning, kam ma'lum paketni faqat zarurat bo'lganda va tekshirib ishlating.


3. Tez ma'lumotnoma

Versiya raqami

text
3.12.4
│  │  └ patch — xato tuzatish
│  └─── minor — yangi imkoniyat (har oktyabr)
└────── major — orqaga moslik (Python 4 rejalashtirilmagan)

Qaysi versiya

text
Qoida: eng yangisidan bittasi oldingi
Bu kursda: Python 3.12

Xavfsizlik qoidalari

text
1. Nomni diqqat bilan yozing (typosquatting)
2. Virtual muhit ishlating
3. Versiyani qotiring (paket==1.2.3)
4. sudo pip install YOZMANG
5. Kam ma'lum paketni tekshiring

Kutubxona tanlash mezonlari

text
Oxirgi yangilanish · Yuklab olishlar · GitHub faolligi
Hujjatlar · Litsenziya · Bog'liqliklar soni

4. Batafsil misollar

Bu buyruqlarni 2-qismda Python o'rnatgach ishlatasiz.

Misol 1 — Versiyani tekshirish

bash
# Python versiyasi
python --version
# Python 3.12.4

# pip versiyasi
pip --version
# pip 24.0 from C:\...\site-packages\pip (python 3.12)
python
# Kod ichidan tekshirish
import sys

print(sys.version)
# 3.12.4 (main, Jun  7 2024, 12:00:00) [MSC v.1938 64 bit (AMD64)]

print(sys.version_info)
# sys.version_info(major=3, minor=12, micro=4, ...)

# Versiyaga bog'liq kod yozish
if sys.version_info >= (3, 10):
    print("match/case ishlatish mumkin")

Nima ko'rsatdi: 2.1-bo'lim. sys.version_info — bu kutubxonalar Python versiyasini tekshirish uchun ishlatadigan usul.

Misol 2 — Standart kutubxona: hech nima o'rnatmasdan

python
# Bularning HAMMASI Python bilan birga keladi — o'rnatish shart emas

import json
import random
from datetime import datetime
from pathlib import Path

# Sana bilan ishlash
print(datetime.now().strftime("%Y-%m-%d %H:%M"))
# 2026-09-07 16:30

# Tasodifiy tanlash
mevalar = ["olma", "uzum", "shaftoli"]
print(random.choice(mevalar))
# uzum

# JSON yasash
malumot = {"ism": "Aziza", "yosh": 20}
print(json.dumps(malumot, ensure_ascii=False))
# {"ism": "Aziza", "yosh": 20}

# Fayl yo'llari bilan ishlash
print(Path.home())
# C:\Users\Aziza

Nima ko'rsatdi: 2.3-bo'lim. To'rtta foydali vazifa — bitta ham o'rnatish yo'q. Bu "batareyalar ichida" tamoyili.

Misol 3 — pip bilan ishlash

bash
# O'rnatish
pip install requests

# Aniq versiyani o'rnatish (tavsiya etiladi)
pip install requests==2.31.0

# Nima o'rnatilgan
pip list

# Bitta paket haqida batafsil — bog'liqliklarni ko'rsatadi
pip show requests
# Name: requests
# Version: 2.31.0
# Requires: certifi, charset-normalizer, idna, urllib3
#           ↑ bitta buyruq bilan 5 ta paket o'rnatilgan

# Loyiha bog'liqliklarini faylga yozish
pip freeze > requirements.txt

# Boshqa kompyuterda tiklash
pip install -r requirements.txt

# O'chirish
pip uninstall requests

Nima ko'rsatdi: 2.4-bo'lim. pip show chiqishiga diqqat qiling: requests yolg'iz kelmaydi, u bilan to'rtta boshqa paket o'rnatiladi. Bog'liqlik zanjiri shundan boshlanadi.

Misol 4 — Kutubxonani baholash

Faraz qiling, sizga JSON bilan tez ishlaydigan kutubxona kerak. PyPI'da uchtasini topdingiz:

text
┌─────────────────────────────────────────────────────────┐
│ orjson                                                  │
│ Oxirgi yangilanish : 2 hafta oldin          ✓          │
│ Oyiga yuklanadi    : 15 000 000             ✓          │
│ GitHub yulduzlar   : 6 000                  ✓          │
│ Ochiq muammolar    : 12 (javob berilgan)    ✓          │
│ Litsenziya         : MIT / Apache-2.0       ✓          │
│ Hujjat             : to'liq, misollar bilan ✓          │
│ XULOSA: ishonchli                                       │
└─────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────┐
│ fastjson-python                                         │
│ Oxirgi yangilanish : 3 yil oldin            ✗          │
│ Oyiga yuklanadi    : 200                    ✗          │
│ GitHub yulduzlar   : 8                      ✗          │
│ Ochiq muammolar    : 14 (javobsiz)          ✗          │
│ Hujjat             : faqat README, 5 qator  ✗          │
│ XULOSA: ishlatmang                                      │
└─────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────┐
│ ujson                                                   │
│ Oxirgi yangilanish : 8 oy oldin             ~          │
│ Oyiga yuklanadi    : 3 000 000              ✓          │
│ GitHub yulduzlar   : 4 300                  ✓          │
│ XULOSA: ishlatsa bo'ladi, lekin orjson faolroq          │
└─────────────────────────────────────────────────────────┘

Nima ko'rsatdi: 2.6-bo'limdagi mezonlar amalda. E'tibor bering: yulduzlar soni yagona mezon emas. Oxirgi yangilanish va javobsiz muammolar ko'proq narsani aytadi.


5. To'g'ri va noto'g'ri tushunishlar

Noto'g'ri fikr To'g'risi
"Eng yangi versiya doim yaxshi" Kutubxonalar moslashishi vaqt oladi. Bittasi oldingi xavfsizroq
"Python 4 chiqadi" Rejalashtirilmagan. Jamoa 2→3 dan saboq oldi
"PyPI dagi paketlar tekshirilgan" Yo'q. Har kim yuklashi mumkin, oldindan tekshiruv yo'q
"pip install xavfsiz" Bu begona kodni ishga tushirish. Ehtiyot bo'ling
"Virtual muhit — ilg'or mavzu" Bu asosiy amaliyot. Birinchi kundan ishlating
"Yulduzlar ko'p = yaxshi paket" Oxirgi yangilanish va javob berilgan muammolar muhimroq
"Standart kutubxona kuchsiz" 200 dan ortiq modul. Ko'p vazifaga o'rnatish shart emas
"sudo pip install — normal" Xavfli. Tizim Pythonini buzishi mumkin

6. Keng tarqalgan xatolar va yechimlari

1. Virtual muhitsiz ishlash

Muammo: hamma paket tizimga o'rnatiladi, loyihalar konflikt qiladi, requirements.txt da keraksiz paketlar to'planadi.

Yechim: har loyiha uchun .venv. Bu bir marta o'rganiladigan va umr bo'yi ishlatiladigan odat.

2. Versiyani qotirmaslik

Muammo: pip install pandas bugun 2.1 ni o'rnatadi, olti oydan keyin 2.4 ni — va kodingiz buziladi.

Yechim: requirements.txt da aniq versiya yozing.

3. Paket nomini shoshib yozish

Muammo: pip install beatifulsoup4 (harf tushib qolgan) — zararli paket o'rnatilishi mumkin.

Yechim: nomni PyPI sahifasidan ko'chiring yoki rasmiy hujjatdan oling.

4. Rasmiy hujjatdan qochish

Muammo: har savolga Stack Overflow'dan javob qidirish. Javob eskirgan yoki noto'g'ri bo'lishi mumkin.

Yechim: docs.python.org ni ochishga o'rganing. Boshida sekin, keyin ancha tez.

5. Har vazifa uchun paket qidirish

Muammo: standart kutubxonada tayyor yechim borligini bilmasdan tashqi paket o'rnatish.

Yechim: avval standart kutubxonani tekshiring (15-qism). Har o'rnatilgan paket — qo'shimcha xavf va bog'liqlik.


7. Integratsiya — bu bilim qayerda kerak bo'ladi

  • 2-qism (Muhit): Python va pip o'rnatish, birinchi virtual muhit
  • 15, 16-qismlar: standart kutubxona batafsil
  • 18-qism (Vositalar): venv, pip, poetry, uv — bog'liqliklarni professional boshqarish
  • 19-qism (Paketlash): o'z paketingizni PyPI'ga chiqarish
  • 28-qism (Infratuzilma): bog'liqliklarni ishlab chiqarishda boshqarish
  • 31-qism (Karyera): ochiq kodga hissa qo'shish

8. Eng yaxshi amaliyotlar

  1. Har loyiha uchun virtual muhit. Istisnosiz.

  2. Versiyani qotiring. requirements.txt yoki pyproject.toml da aniq versiya.

  3. sudo pip install hech qachon.

  4. Yangi paket o'rnatishdan oldin 30 soniya tekshiring. Oxirgi yangilanish, yuklab olishlar, GitHub.

  5. Avval standart kutubxonaga qarang. Ko'p vazifa allaqachon yechilgan.

  6. Rasmiy hujjatni o'qishga o'rganing. Bu eng qimmatli ko'nikmalardan biri.

  7. Eng yangi versiyadan bittasi oldingisini tanlang.


9. Amaliy topshiriq

Vazifa 1: Kutubxonani baholash

PyPI (pypi.org) ga kiring va quyidagi paketlarni 2.6-bo'limdagi mezonlar bo'yicha baholang:

  1. requests
  2. pandas
  3. flask

Har biri uchun jadval to'ldiring:

text
Nomi              : 
Oxirgi versiya    : 
Oxirgi yangilanish: 
Litsenziya        : 
GitHub yulduzlar  : 
Bog'liqliklar     : 
XULOSA            : 

Vazifa 2: Standart kutubxonani kashf qilish

docs.python.org/3/library/ sahifasini oching. Ro'yxatni ko'rib chiqing va beshta siz uchun qiziq modulni tanlang. Har biri uchun bir jumlada yozing: u nima qiladi va sizga qayerda kerak bo'lishi mumkin?

Vazifa 3: Xavfsizlik mashqi

Quyidagi pip install buyruqlarida muammo bormi? Bo'lsa — qanday?

bash
1.  pip install reqeusts
2.  sudo pip install numpy
3.  pip install pandas
4.  pip install django==4.2.11
5.  pip install some-random-utils-2024
Javoblar
  1. Typosquatting xavfi — requests emas, reqeusts. Harflar joyi almashgan. Bu klassik hujum
  2. sudo ishlatilgan — tizim Pythonini buzishi mumkin. Virtual muhit ishlating
  3. Texnik jihatdan to'g'ri, lekin versiya qotirilmagan. pandas==2.2.0 yaxshiroq
  4. To'g'ri — versiya aniq ko'rsatilgan, nom to'g'ri
  5. Shubhali nom — kam ma'lum, "utils" umumiy so'z, yilni nomga qo'shish g'alati. Tekshirmasdan o'rnatmang

Vazifa 4: Versiya tanlash

Yangi loyiha boshlayapsiz. Bugungi holatga qarab (2.2-bo'limdagi jadval):

  1. Qaysi Python versiyasini tanlaysiz? Nega?
  2. Agar loyihangiz numpy va pandas ishlatsa, tanlovingiz o'zgaradimi?
  3. Loyiha 3 yil ishlashi kerak bo'lsa, qaysi versiyani tanlagan bo'lardingiz?

Nimani mustahkamlaydi: 2.2 (versiyalar), 2.5 (xavfsizlik), 2.6 (tanlash mezonlari).


Xulosa

Bu darsda Python ekotizimini ko'rdik.

Eng muhim uch fikr:

  1. Ekotizim — Pythonning eng katta kuchi. 500 000 paket va boy standart kutubxona. Ko'p vazifa allaqachon yechilgan.

  2. pip install — bu begona kodni ishga tushirish. Nomni diqqat bilan yozing, virtual muhit ishlating, versiyani qotiring, sudo yozmang.

  3. Yaxshi kutubxonani mezon bilan tanlang. Oxirgi yangilanish va javob berilgan muammolar — yulduzlar sonidan muhimroq.

Keyingi darsda 1-qismni yakunlaymiz: print("Salom") yozganingizdan ekranda harf paydo bo'lgunicha nima sodir bo'lishini boshidan oxirigacha kuzatamiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
1.7-dars: Python ekotizimi — versiyalar, PyPI va jamoa — IlmHamroh