Cel: po tym rozdziale będziesz wiedzieć:
- czym jest moduł i pakiet,
- jak importować własny i cudzy kod,
- jak instalować zewnętrzne biblioteki,
- jak używać tysięcy gotowych narzędzi w Pythonie.
1) Co to jest moduł?
Wyobraź sobie, że piszesz program i wiele razy potrzebujesz tych samych obliczeń.
Zamiast wklejać kod w każdym miejscu, wkładasz go do osobnego pliku .py – to właśnie moduł.
Przykład – moduł math (wbudowany w Pythona):
import math
print(math.sqrt(16)) # 4.0 – pierwiastek
print(math.pi) # 3.141592...
Tak jak w domu masz pudełko z narzędziami, tak w Pythonie masz plik z gotowymi funkcjami.
2) Jak importować moduły
Cały moduł
import random
print(random.randint(1, 6)) # losowa liczba 1–6
Wybrane elementy
from math import sqrt, pi
print(sqrt(9), pi)
Krótsza nazwa (alias)
import numpy as np
print(np.array([1, 2, 3]))
💡 Rada: unikaj from X import * – wprowadza bałagan, bo nie wiadomo, skąd pochodzi dana funkcja.
3) Moduły standardowe – wbudowane skarby
Python ma dziesiątki gotowych modułów. Nie musisz nic instalować.
| Moduł | Do czego służy | Przykład |
|---|---|---|
math | funkcje matematyczne | math.sqrt(25) |
random | losowanie | random.choice([1,2,3]) |
datetime | daty i czas | datetime.date.today() |
os / sys | pliki, foldery, info o systemie | os.listdir() |
statistics | średnia, mediana | statistics.mean([1,2,3]) |
json | zapis/odczyt JSON | json.dumps({"a":1}) |
Praktyka – losowanie hasła z liter:
import random, string
letters = string.ascii_letters
password = "".join(random.choice(letters) for _ in range(8))
print(password)
4) Tworzenie własnego modułu
1️⃣ Utwórz plik moj_modul.py:
def powitanie(imie):
return f"Cześć, {imie}!"
2️⃣ W tym samym katalogu stwórz main.py:
import moj_modul
print(moj_modul.powitanie("Ala"))
💡 Python widzi oba pliki w jednym folderze i wie, skąd wziąć funkcję.
5) Pakiety – foldery z modułami
Pakiet = folder z plikiem __init__.py (może być pusty).
Przykład struktury:
projekt/
sklep/
__init__.py
koszyk.py
produkty.py
W pliku głównym:
from sklep.koszyk import dodaj_produkt
Pakiety pozwalają dzielić duże projekty na porządne katalogi.
6) Instalowanie bibliotek zewnętrznych (pip)
Wbudowane moduły to dopiero początek.
Python ma menedżera pip, który pobiera gotowe paczki z internetu.
W terminalu:
pip install requests
Przykład – pobieranie danych z internetu:
import requests
r = requests.get("https://jsonplaceholder.typicode.com/todos/1")
print(r.json())
💡 W większych projektach warto używać wirtualnych środowisk (venv), by nie mieszać bibliotek między różnymi projektami.
7) Sprawdzanie zainstalowanych pakietów
- Lista wszystkich:
pip list
- Szczegóły jednego pakietu:
pip show requests
8) Mini-projekty (proste i praktyczne)
A) Kalkulator dat
import datetime
today = datetime.date.today()
future = today + datetime.timedelta(days=100)
print("Dziś:", today)
print("Za 100 dni:", future)
B) Generator kuponów
import random
kupony = [random.randint(1000, 9999) for _ in range(5)]
print("Twoje kupony:", kupony)
C) Konwerter walut (proste API)
import requests
resp = requests.get("https://api.exchangerate.host/latest?base=EUR&symbols=PLN")
data = resp.json()
print("1 EUR =", data["rates"]["PLN"], "PLN")
9) Typowe pułapki i szybkie naprawy
| Problem | Dlaczego | Rozwiązanie |
|---|---|---|
ModuleNotFoundError | brak biblioteki | pip install nazwa_pakietu |
| Literówka w nazwie | np. import Numpy zamiast numpy | sprawdź pisownię |
| Konflikt nazw | plik random.py w katalogu zasłania moduł random | zmień nazwę pliku |
10) Zadania do samodzielnego zrobienia
- Własny moduł geometry.py z funkcjami
pole_kwadratu(a)ipole_kola(r). - Pakiet shop z modułami
cart.py(lista produktów) iuser.py(dane klienta). - Gra „Zgadnij liczbę” 1–20 – użyj
random.randint(). - Skrypt pobierający prognozę pogody z darmowego API (
requests). - Własna mała biblioteka z 2–3 prostymi funkcjami i test w innym pliku.
Co zabierasz z odcinka 6?
- Wiesz, czym są moduły i pakiety.
- Umiesz korzystać z biblioteki standardowej i instalować cudze pakiety przez pip.
- Potrafisz napisać własny moduł i wczytać go w innym pliku.
- Rozpoznajesz i unikasz typowych błędów z importem.

