📦 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.
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!")