0%

📦 Moduļi un pakotnes

Python bagātīgā standarta bibliotēka un miljoniem trešās puses pakotņu padara to par universālu instrumentu. Iepazīsimies ar importēšanu, pip, virtuālām vidēm un noderīgiem moduļiem.

python

import pamati

Teksts
# Importēt visu moduli
import math
print(math.sqrt(16))    # 4.0
print(math.pi)          # 3.14159...

# Importēt ar alias
import datetime as dt
tagad = dt.datetime.now()
print(tagad)

# Importēt specifiskas lietas
from math import sqrt, pi, floor
print(sqrt(25))   # 5.0
print(floor(3.7)) # 3

# Importēt visu (nav ieteicami – var radīt konflikti)
from math import *

# Relatīvā importēšana (pašu moduļos)
# from . import kaimiņ_modulis
# from .. import vecāku_modulis

# Pārbaude, vai modulis ir pieejams
try:
    import requests
    REQUESTS_PIEEJAMS = True
except ImportError:
    REQUESTS_PIEEJAMS = False

Paši veidoti moduļi

Teksts
# matemātika.py – izveidojam moduli
def kvadrāts(x):
    return x ** 2

def kubiks(x):
    return x ** 3

PI = 3.14159265

# Kods, kas izpildās tikai tiešā palaišanā (ne importēšanā)
if __name__ == "__main__":
    print("Modulis tiek palaists tieši")
    print(kvadrāts(5))

# ---

# galvenais.py – izmantojam moduli
import matemātika

print(matemātika.kvadrāts(4))   # 16
print(matemātika.PI)             # 3.14159265

# Pakotne – mape ar __init__.py
# mana_pakotne/
#     __init__.py        <- padara mapi par pakotni
#     modulis_a.py
#     modulis_b.py
#     apakšmape/
#         __init__.py
#         modulis_c.py

# Importēšana no pakotnes
from mana_pakotne import modulis_a
from mana_pakotne.apakšmape import modulis_c

pip un virtuālās vides

Teksts
# pip – Python pakotņu pārvaldnieks
pip install requests        # Instalēt pakotni
pip install requests==2.31  # Konkrēta versija
pip install "requests>=2.28"  # Minimālā versija
pip install -r requirements.txt  # No faila

pip uninstall requests      # Noinstalēt
pip list                    # Uzskaitīt instalētās
pip show requests           # Detaļas par pakotni
pip freeze > requirements.txt  # Saglabāt sarakstu

# Atjaunināt pip
pip install --upgrade pip

# Virtuālā vide – izolē projekta atkarības
python -m venv venv         # Izveidot venv/ mapi

# Aktivizēt (Windows)
venv\Scripts\activate

# Aktivizēt (macOS/Linux)
source venv/bin/activate

# Deaktivizēt
deactivate

# Pēc aktivizācijas pip instalē tikai šajā vidē
pip install flask
pip freeze > requirements.txt

Standarta bibliotēka

Teksts
# os – operētājsistēmas funkcijas
import os

print(os.getcwd())                # Pašreizējais direktorijs
os.makedirs("jauna/mape", exist_ok=True)  # Izveidot mapju struktūru
failu_saraksts = os.listdir(".")   # Direktorija saturs
os.environ.get("PATH")             # Vides mainīgais
os.path.join("mape", "fails.txt")  # Ceļa salikšana

# sys – Python interpretatora info
import sys

print(sys.version)      # Python versija
print(sys.platform)     # "win32", "linux", "darwin"
sys.exit(0)             # Apturēt programmu
sys.argv                # Komandrindas argumenti

# math – matemātika
import math

print(math.ceil(3.2))      # 4 – uz augšu
print(math.floor(3.8))     # 3 – uz leju
print(math.log(100, 10))   # 2.0
print(math.factorial(5))   # 120
print(math.gcd(12, 8))     # 4

# random – nejaušības
import random

print(random.random())              # 0.0–1.0
print(random.randint(1, 100))       # Vesels skaitlis 1–100
print(random.choice([1, 2, 3]))     # Nejauši no saraksta
random.shuffle([1, 2, 3, 4, 5])    # Sajaukt sarakstu
random.sample([1,2,3,4,5], k=3)    # 3 unikāli elementi

# datetime – datumi un laiks
from datetime import datetime, date, timedelta

tagad = datetime.now()
šodien = date.today()
print(tagad.strftime("%d.%m.%Y %H:%M"))  # Formatēt

nākamā_nedēļa = tagad + timedelta(weeks=1)
starpība = datetime(2025, 1, 1) - tagad

parsēts = datetime.strptime("25.12.2025", "%d.%m.%Y")

# collections – speciālie konteineri
from collections import Counter, defaultdict, deque

vārdi = ["ābols", "bumbieris", "ābols", "ķirsis", "bumbieris", "ābols"]
skaitļi = Counter(vārdi)
print(skaitļi)               # Counter({"ābols": 3, "bumbieris": 2, "ķirsis": 1})
print(skaitļi.most_common(2))  # [("ābols", 3), ("bumbieris", 2)]

dd = defaultdict(list)
dd["augļi"].append("ābols")   # Nav kļūdas, pat ja atslēgas nebija

requests – HTTP pieprasījumi

💡 Populārākās pakotnes

  • requests – HTTP klienti
  • numpy – skaitliskās operācijas
  • pandas – datu analīze
  • flask / fastapi – web serveri
  • sqlalchemy – datu bāzes ORM
  • pytest – testēšana
Teksts
# pip install requests
import requests

# GET pieprasījums
response = requests.get("https://api.github.com/users/octocat")

print(response.status_code)     # 200
print(response.headers["content-type"])  # application/json
dati = response.json()           # JSON → Python dict
print(dati["name"])              # The Octocat

# GET ar parametriem
response = requests.get(
    "https://api.example.com/meklēt",
    params={"q": "python", "lapas": 1},
    timeout=10
)

# POST pieprasījums
response = requests.post(
    "https://api.example.com/lietotāji",
    json={"vārds": "Anna", "e-pasts": "anna@example.com"},
    headers={"Authorization": "Bearer TOKEN123"}
)

# Kļūdu apstrāde
try:
    resp = requests.get("https://httpbin.org/status/404", timeout=5)
    resp.raise_for_status()   # Izmet kļūdu, ja 4xx/5xx
except requests.exceptions.HTTPError as e:
    print(f"HTTP kļūda: {e}")
except requests.exceptions.ConnectionError:
    print("Savienojuma kļūda!")
except requests.exceptions.Timeout:
    print("Pieprasījums pārsniedza laiku!")