Python — moduler, paket och virtuella miljöer
Kunna organisera kod i moduler, installera paket och isolera miljöer med venv.
Förkunskaper
Intuition
En modul är en .py-fil. Ett paket är en katalog med moduler. Så snart ett program är mer än ett par hundra rader ska det delas upp.
projekt/
├── src/minapp/
│ ├── __init__.py
│ ├── data.py # inläsning och rensning
│ ├── model.py # träning och förutsägelse
│ └── cli.py # kommandoradsgränssnitt
├── tests/
├── requirements.txt
└── README.md
from minapp.data import las_csv — importen speglar katalogstrukturen.
Regel: en modul ska ha ett tydligt ansvar och kunna importeras utan sidoeffekter. Kod som ska köras läggs under if __name__ == "__main__":.
Kod
# Virtuell miljö: ett isolerat Python per projekt
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install numpy pandas scikit-learn
pip freeze > requirements.txt # låser exakta versioner
deactivate
# På en annan dator (eller i CI):
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
Varför venv? Projekt A behöver numpy 1.26, projekt B behöver 2.1. Utan isolering går ett av dem sönder. Med venv har varje projekt sitt eget paketträd.
requirements.txt med exakta versioner (numpy==2.1.3) är skillnaden mellan «det funkade i somras» och «det funkar». Lägg alltid .venv/ i .gitignore — miljön återskapas ur filen, den ska inte ligga i git.
Behärskning innebär
- Delar upp kod i moduler och importerar mellan dem
- Skapar och använder en virtuell miljö
- Låser beroenden i requirements
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- Python-dokumentationen (PSF-licens) — PSF
- Python — venv — PSF