ebSkola

9.1 Ārējās bibliotēkas un instalēšana

Stundas uzdevums: Iepazīt Python bibliotēku ekosistēmu un iemācīties instalēt un izmantot ārējās bibliotēkas (pip).

SR 2.4.11. Lieto standartizētas bibliotēkas un API SR 2.4.12. Sagatavo programmēšanas vidi SR 2.4.2. Programmēšanas rīku un bibliotēku izvēle

70 min plāns: Teorija un paraugs (~10 min) · 1. uzdevums (~15 min) - izveido virtuālo vidi un instalē bibliotēku · 2. uzdevums (~25 min) - izsauc reālu API ar requests · 3. uzdevums (~20 min) - saglabā atkarības requirements.txt. Papildu uzdevumu sāc tikai tad, ja pārējie trīs ir gatavi.

Pirms sāc: atver termināli projekta mapē. Šai stundai vajadzīgs internets - bez tā pip install un API izsaukums nestrādās.

Teorija: pip un virtual environment

Bibliotēka ir cita programmētāja jau uzrakstīts kods, ko vari iekļaut savā projektā ar vienu komandu. Python ir aptuveni 500,000 publisku bibliotēku repozitorijā PyPI.

# Instalācija
pip install streamlit
pip install requests
pip install --upgrade pillow

# Saraksts ar instalētajām
pip list

# Saglabā atkarības
pip freeze > requirements.txt
pip install -r requirements.txt

Virtual environment ir izolēta vide projektam, lai dažādi projekti varētu izmantot dažādas versijas:

python -m venv venv          # izveido
venv\Scripts\activate         # Windows aktivizācija
source venv/bin/activate     # Linux/Mac aktivizācija
deactivate                   # iziet

Praktiskie uzdevumi

1. uzdevums -

Izveido virtuālo vidi un instalē bibliotēku

Beigās tavas bibliotēkas dzīvos projekta mapē, nevis visā datorā.

  1. Izpildi python -m venv venv projekta mapē.
  2. Aktivizē vidi: Windows venv\Scripts\activate, macOS/Linux source venv/bin/activate.
  3. Pārbaudi, vai termināļa rindas sākumā parādījās (venv).
  4. Izpildi pip install requests.
  5. Izpildi pip list un atrodi sarakstā requests.
  6. Pievieno failam .gitignore rindu venv/.

Gatavs, kad: terminālī redzams (venv), pip list rāda requests, un venv/ nenonāk GitHub.

2. uzdevums -

Izsauc reālu API ar requests

Beigās tava programma paņems laika ziņas no interneta.

  1. Izveido failu laiks.py un ieraksti import requests.
  2. Uzraksti funkciju def laiks_riga():.
  3. Izsauc tajā requests.get("https://api.open-meteo.com/v1/forecast", params={...}) ar Rīgas koordinātēm.
  4. Pārbaudi r.status_code un atgriez None, ja tas nav 200.
  5. Atgriez r.json()["current_weather"].
  6. Izdrukā temperatūru un palaid programmu.
  7. Izslēdz internetu vai sabojā adresi un pārbaudi, ka programma neavarē.

Gatavs, kad: programma izdrukā pašreizējo temperatūru, bet ar sabojātu adresi paziņo par kļūdu, nevis avarē.

3. uzdevums -

Saglabā atkarības requirements.txt

Beigās klasesbiedrs varēs palaist tavu projektu ar vienu komandu.

  1. Izpildi pip freeze > requirements.txt.
  2. Atver failu un pārbaudi, vai tajā ir requests ar versijas numuru.
  3. Veic commit ar requirements.txt, bet bez mapes venv/.
  4. Izdzēs mapi venv un izveido to no jauna.
  5. Izpildi pip install -r requirements.txt.
  6. Palaid laiks.py un pārbaudi, ka viss atkal strādā.
  7. Pieraksti vienu secinājumu: kāpēc venv nedrīkst nonākt GitHub.

Gatavs, kad: pēc vides dzēšanas un atjaunošanas no requirements.txt programma strādā tāpat kā iepriekš.

Papildu uzdevums - Pievieno otru bibliotēku

Ja pamatdarbs ir gatavs, izmēģini vēl vienu PyPI bibliotēku.

  1. Instalē pip install rich.
  2. Importē to un izdrukā laika ziņas krāsainā tabulā.
  3. Atjauno requirements.txt ar pip freeze.
  4. Pārbaudi, vai failā parādījās jaunā bibliotēka.
  5. Veic commit un push.

Gatavs, kad: izvade ir krāsaina, un requirements.txt satur abas bibliotēkas.

Biežākās kļūdas

  • Aizmirsts aktivizēt venv: Bibliotēkas instalējas globāli, sajaucot dažādu projektu atkarības.
  • pip vs pip3: Daudzās sistēmās jālieto pip3 Python 3 versijai.
  • requirements.txt nav GitHub: Bez tā citi nevar palaist tavu projektu.

Koda piemērs

import requests

def laiks_riga():
    r = requests.get(
        "https://api.open-meteo.com/v1/forecast",
        params={"latitude": 56.95, "longitude": 24.10, "current_weather": True}
    )
    if r.status_code != 200: return None
    return r.json()["current_weather"]

dati = laiks_riga()
if dati:
    print(f"Rīgā: {dati['temperature']}°C, vējš {dati['windspeed']} km/h")
Rīgā: 5.4°C, vējš 12 km/h