0Pricing
Python Academy · Lekcja

Budowanie za pomocą build

Twórz pliki wheels i sdists

Budowanie za pomocą build to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Na czym polega budowanie

Kod źródłowy musi zostać przekształcony w artefakty dystrybucyjne, które pip może zainstalować. Współczesnym narzędziem do tego celu jest build, uruchamiane za pomocą python -m build.

Tworzy ono dwa rodzaje plików: dystrybucję źródłową i wheel.

sdist a wheel

Dwa rodzaje artefaktów:

  • sdist (.tar.gz) — archiwum źródłowe; pip buduje je podczas instalacji
  • wheel (.whl) — gotowe archiwum; pip tylko je rozpakowuje

Wheels instaluje się szybciej i są preferowane. sdist jest rozwiązaniem awaryjnym oraz kanonicznym źródłem kodu.

Instalowanie narzędzia build

Należy zainstalować je raz za pomocą pip install build. To cienka warstwa frontendowa: odczytuje plik pyproject.toml, przygotowuje odizolowane środowisko i wywołuje backend budowania w celu utworzenia artefaktów.

Nie wywołuje się backendu bezpośrednio — koordynuje go narzędzie build.

Uruchamianie budowania

Z katalogu głównego projektu należy uruchomić python -m build. Domyślnie tworzy ono zarówno sdist, jak i wheel, a następnie umieszcza je w nowym katalogu dist/.

Za pomocą --wheel lub --sdist można zbudować tylko jeden z nich.

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)

Nazwy plików wheel

Nazwy wheel kodują metadane: mytool-0.1.0-py3-none-any.whl oznacza nazwę mytool, wersję 0.1.0, Python 3, brak wymagań dotyczących ABI i dowolną platformę. Pakiety zawierające wyłącznie kod w Pythonie otrzymują oznaczenie py3-none-any.

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

Izolacja procesu budowania

Domyślnie build tworzy świeże środowisko wirtualne, instaluje w nim elementy requires z sekcji [build-system] i tam przeprowadza budowanie. Gwarantuje to, że proces budowania nie będzie przypadkowo zależeć od pakietów, które akurat znajdują się w Państwa środowisku.

Sprawdzanie folderu dist

Po zakończeniu budowania katalog dist/ zawiera artefakty. Jego wyświetlenie pozwala potwierdzić, co zostało utworzone, zanim pakiet zostanie przesłany. Jest to zwykłe wyświetlenie zawartości katalogu.

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)

Sprawdzanie wheel

Wheel to po prostu archiwum ZIP. Można je rozpakować, aby sprawdzić, czy znajdują się w nim moduły i pliki danych oraz czy nie pominięto niczego ważnego. Jeśli brakuje pliku tutaj, będzie go brakować również po instalacji.

Czyste procesy budowania

Nieaktualne pliki w katalogach build/ lub dist/ mogą prowadzić do mylących wyników. Przed budowaniem wydania należy usunąć te katalogi, aby opublikować dokładnie to, co tworzy bieżący kod źródłowy.

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

Powtarzalne budowania

Ten sam kod źródłowy powinien zawsze tworzyć te same artefakty. Należy przypiąć wersje backendu budowania w polu [build-system] requires i unikać pobierania wartości z działającego środowiska. Powtarzalność oznacza, że współpracownik lub serwer CI otrzyma identyczny wynik.

W połączeniu z czystym budowaniem eliminuje to niespodzianki w rodzaju „u mnie działa”.

Budowanie w CI

Większość projektów jest budowana na serwerze ciągłej integracji, a nie na laptopie. Zadanie CI pobiera kod, uruchamia python -m build i zapisuje artefakty. Gwarantuje to, że wydania za każdym razem pochodzą ze znanego, czystego stanu.

W CI uruchamiane jest dokładnie to samo polecenie, którego używa się lokalnie.

Szybkie sprawdzenie

Proszę sprawdzić swoją wiedzę na temat budowania.

Podsumowanie

Nauczyli się już Państwo tworzyć artefakty:

  • pip install build, a następnie python -m build
  • Tworzony jest sdist (.tar.gz) i wheel (.whl) w katalogu dist/
  • Budowanie odbywa się w odizolowanym środowisku z użyciem elementów [build-system] requires
  • Przed wydaniem należy sprawdzić wheel i wykonać czyste budowanie

Często zadawane pytania

Czy lekcja „Budowanie za pomocą build” jest bezpłatna?

Tak — pełny tekst „Budowanie za pomocą build” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Budowanie za pomocą build”?

Twórz pliki wheels i sdists Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Budowanie za pomocą build”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Struktura projektu i pyproject.toml
  2. Budowanie za pomocą build
  3. Wersjonowanie i metadane
  4. Publikowanie za pomocą twine
← Powrót do Python Academy