Python Academy · Lektion

Projektstruktur och pyproject.toml

Strukturera ett paket

Lektion 1 av 413 steg

Projektstruktur och pyproject.toml är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.

Varför paketera koden

Ett skript finns på din dator, medan ett paket kan installeras av vem som helst med pip install. Paketering förvandlar en kodmapp till en distribuerbar, versionshanterad och återanvändbar enhet.

Det första steget är en ren projektstruktur och en konfigurationsfil.

src-layouten

Den rekommenderade strukturen placerar den importerbara koden i en katalog med namnet src/:

  • src/mypackage/__init__.py
  • src/mypackage/core.py
  • pyproject.toml
  • README.md och tests/

src-layouten förhindrar att du råkar importera koden från projektroten i stället för den installerade kopian.

Filen __init__.py

__init__.py markerar en katalog som ett importerbart paket och körs första gången paketet importeras. Här kan du också exponera det offentliga API:t genom att importera viktiga namn.

Även en tom __init__.py räcker för att skapa ett paket.

package_dir = 'src/mypackage'
files = ['__init__.py', 'core.py', 'utils.py']
for f in files:
    print(package_dir + '/' + f)
print('Importable as:', 'mypackage')

Vad pyproject.toml är

pyproject.toml är den enda standardiserade konfigurationsfilen (PEP 518/621) för modern Python-paketering. Den ersätter setup.py i de flesta projekt och läses av byggverktyg.

Filen använder TOML-formatet: avsnitt inom hakparenteser och rader med nyckel = värde.

Tabellen build-system

Tabellen [build-system] talar om för verktygen hur paketet ska byggas. Ett vanligt val är:

  • requires = ['setuptools', 'wheel']
  • build-backend = 'setuptools.build_meta'

Andra byggbackend-alternativ är Hatchling och Flit; grundidén är densamma.

Tabellen project

Tabellen [project] innehåller metadata: name, version, description, authors, readme, requires-python och dependencies. Det är detta som användarna ser på PyPI.

Tänk på den som paketets identitetskort.

project = {
    'name': 'mytool',
    'version': '0.1.0',
    'requires-python': '>=3.9',
    'dependencies': ['requests>=2.0'],
}
for k, v in project.items():
    print(k, '=', v)

Namngivningsregler

Paketnamnet måste vara unikt på PyPI och följer normaliseringsregler: det är skiftlägesokänsligt och bindestreck och understreck behandlas likadant. Kontrollera att namnet är ledigt innan du bestämmer dig, så att du undviker en namnkonflikt vid uppladdningen.

name = 'My_Cool.Tool'
normalized = name.lower().replace('_', '-').replace('.', '-')
print('PyPI normalized name:', normalized)

Deklarera beroenden

Lista körtidsberoenden under dependencies med versionsbegränsningar som 'requests>=2.28,<3'. Valfria extrafunktioner anges under [project.optional-dependencies] och kan installeras med pip install mytool[dev].

Håll begränsningarna så lösa som är säkert, så att paketet kan samexistera med andra.

Entry points

Om du vill distribuera ett kommandoradsverktyg lägger du till en post under [project.scripts], till exempel mytool = 'mypackage.cli:main'. Efter installationen körs den funktionen när du skriver mytool. Det är så CLI:er som black och pytest exponerar sina kommandon.

Inkludera filer som inte är kod

Datafiler (mallar, JSON) inkluderas inte automatiskt. Konfigurera paketdata i din build backend så att filerna följer med i wheel-filen. Att glömma detta är en vanlig orsak till fel av typen ”fungerar lokalt men går sönder vid installation”.

Redigerbara installationer under utveckling

Under utvecklingen installerar du paketet i redigerbart läge med pip install -e .. Ändringar i källkoden börjar gälla omedelbart utan att du behöver installera om paketet. Detta förutsätter en korrekt pyproject.toml, vilket är ännu en anledning att konfigurera den tidigt.

Redigerbara installationer ger den snabbaste återkopplingen när du itererar på ett paket.

Snabbtest

Testa dina kunskaper om projektstrukturer.

Sammanfattning

Du har strukturerat ett paket:

  • Använd src-layouten där __init__.py markerar paketen
  • pyproject.toml är standardkonfigurationen med [build-system] och [project]
  • Deklarera name, version, requires-python och dependencies
  • Lägg till entry points under [project.scripts] för CLI:er och konfigurera paketdata
Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
320

Vanliga frågor

Är lektionen ”Projektstruktur och pyproject.toml” gratis?

Ja – hela texten till ”Projektstruktur och pyproject.toml” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Projektstruktur och pyproject.toml”?

Strukturera ett paket Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Python Academy?

Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Projektstruktur och pyproject.toml”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Python Academy-lektionen?

Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Projektstruktur och pyproject.toml
  2. Bygga med build
  3. Versionshantering och metadata
  4. Publicera med twine
← Tillbaka till Python Academy