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ępniepython -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
- Struktura projektu i pyproject.toml
- Budowanie za pomocą build
- Wersjonowanie i metadane
- Publikowanie za pomocą twine