Python Academy · leksjon

Bygge med build

Opprett wheels og sdists

Leksjon 2 av 413 trinn

Bygge med build er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva bygging betyr

Kildekoden må gjøres om til distribusjonsartefakter som pip kan installere. Det moderne verktøyet for dette er build, som kjøres med python -m build.

Det produserer to typer filer: en kildedistribusjon og en wheel-fil.

sdist kontra wheel

Det finnes to artefakttyper:

  • sdist (.tar.gz) er et kildearkiv; pip bygger det ved installasjon
  • wheel (.whl) er et forhåndsbygd arkiv; pip pakker det bare ut

Wheel-filer installeres raskere og foretrekkes. sdist er reservealternativet og den kanoniske kildekoden.

Installere byggeverktøyet

Installer det én gang med pip install build. Det er en tynn frontend: den leser pyproject.toml, setter opp et isolert miljø og kaller build-backenden for å opprette artefaktene.

De kaller ikke backenden direkte; build koordinerer den.

Kjøre byggingen

Kjør python -m build fra prosjektroten. Som standard oppretter kommandoen både en sdist og en wheel-fil og legger dem i en ny dist/-mappe.

Bruk --wheel eller --sdist for å bygge bare én av dem.

args = []
targets = []
if '--sdist' in args:
    targets.append('sdist')
if '--wheel' in args:
    targets.append('wheel')
if not targets:
    targets = ['sdist', 'wheel']
print('Will build:', targets)

Filnavn for wheel-filer

Wheel-navn inneholder metadata: mytool-0.1.0-py3-none-any.whl betyr navnet mytool, versjonen 0.1.0, Python 3, ingen ABI-krav og en hvilken som helst plattform. Rene Python-pakker får py3-none-any.

name = 'mytool'
version = '0.1.0'
wheel = name + '-' + version + '-py3-none-any.whl'
print(wheel)
print('Parts:', wheel[:-4].split('-'))

Isolert bygging

Som standard oppretter build et nytt virtuelt miljø, installerer requires fra [build-system] og bygger pakken der. Dette sikrer at byggingen ikke ved et uhell avhenger av pakker som bare tilfeldigvis finnes i miljøet Deres.

Undersøke dist-mappen

Etter en bygging inneholder dist/ artefaktene Deres. Ved å liste innholdet kan De kontrollere hva som ble produsert før opplasting. Dette er en vanlig kataloglisting.

dist = ['mytool-0.1.0.tar.gz', 'mytool-0.1.0-py3-none-any.whl']
for f in dist:
    kind = 'sdist' if f.endswith('.tar.gz') else 'wheel'
    print(kind.ljust(6), f)

Kontrollere en wheel-fil

En wheel-fil er bare et ZIP-arkiv. De kan pakke den ut for å kontrollere at modulene og datafilene er med, og at ingenting viktig mangler. Hvis en fil mangler her, vil den også mangle etter installasjonen.

Rene bygginger

Foreldede filer i build/ eller dist/ kan gi forvirrende resultater. Slett disse mappene før en bygging til en utgivelse, slik at De publiserer nøyaktig det den gjeldende kildekoden produserer.

stale_dirs = ['build', 'dist', 'mytool.egg-info']
for d in stale_dirs:
    print('Remove before clean build:', d)

Reproduserbare bygginger

Den samme kildekoden bør alltid bygge de samme artefaktene. Lås versjonene av build-backenden i [build-system] requires, og unngå å hente verdier fra det aktive miljøet. Reproduserbarhet betyr at en kollega eller CI-server får identisk resultat.

Sammen med rene bygginger fjerner dette overraskelser av typen «det fungerer på min maskin».

Bygge i CI

De fleste prosjekter bygges på en continuous-integration-server i stedet for på en bærbar datamaskin. En CI-jobb henter koden, kjører python -m build og lagrer artefaktene. Dette sikrer at utgivelser alltid kommer fra en kjent og ren tilstand.

Den nøyaktig samme kommandoen som kjøres lokalt, kjøres også i CI.

Hurtigsjekk

Test kunnskapene Deres om bygging.

Oppsummering

De har lært å bygge artefakter:

  • pip install build, deretter python -m build
  • Oppretter en sdist (.tar.gz) og en wheel (.whl) i dist/
  • Bygginger skjer i et isolert miljø ved hjelp av [build-system]-verdien requires
  • Undersøk wheel-filen, og utfør rene bygginger før utgivelse
Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «Bygge med build» gratis?

Ja – hele teksten i «Bygge med build» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Bygge med build»?

Opprett wheels og sdists Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Bygge med build»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Prosjektstruktur og pyproject.toml
  2. Bygge med build
  3. Versjonering og metadata
  4. Publisering med twine
← Tilbake til Python Academy