Python Academy · Lekcja

Publikowanie za pomocą twine

Przesyłaj pakiety do PyPI

Lekcja 4 z 413 kroki

Publikowanie za pomocą twine to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 4 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.

Ostatni krok

W katalogu dist/ znajdują się zbudowane artefakty. Ostatnim krokiem jest przesłanie ich do PyPI, aby każdy mógł zainstalować Państwa pakiet za pomocą pip install. Standardowym narzędziem do tego celu jest twine.

twine przesyła pliki bezpiecznie przez HTTPS i sprawdza artefakty przed ich wysłaniem.

Instalowanie twine

Proszę zainstalować je za pomocą polecenia pip install twine. To niewielkie, wyspecjalizowane narzędzie, którego jedynym zadaniem jest sprawdzanie i przesyłanie plików z katalogu dist/. Nie służy ono do budowania pakietów.

Najpierw TestPyPI

Do przećwiczenia przesyłania pakietów służy osobna piaskownica, TestPyPI. Proszę najpierw opublikować pakiet tam, aby wykryć problemy bez zaśmiecania rzeczywistego indeksu. Nazwy i wersje w TestPyPI są niezależne od PyPI.

Proszę przesłać pakiet za pomocą polecenia twine upload --repository testpypi dist/*.

Sprawdzanie przed przesłaniem

Polecenie twine check dist/* sprawdza, czy metadane i długi opis zostaną poprawnie wyświetlone w PyPI. Proszę uruchamiać je za każdym razem; w przeciwnym razie niepoprawny opis z pliku README może zostać wyświetlony jako zwykły tekst na stronie projektu.

files = ['mytool-0.1.0.tar.gz', 'mytool-0.1.0-py3-none-any.whl']
for f in files:
    status = 'PASSED' if f.endswith(('.gz', '.whl')) else 'SKIP'
    print('check', f, '->', status)

Tokeny API zamiast haseł

Proszę uwierzytelniać się za pomocą tokenu API z konta PyPI, a nie hasła. Jako nazwę użytkownika należy użyć __token__, a jako hasło — tokenu rozpoczynającego się od pypi-. Zakres tokenów można ograniczyć do jednego projektu, a same tokeny można w każdej chwili unieważnić.

username = '__token__'
token = 'pypi-AgEIcHl...'
print('Username:', username)
print('Token starts with:', token[:5])
print('Never commit the token to git')

Przechowywanie danych uwierzytelniających

Aby uniknąć ponownego wpisywania tokenów, proszę przechowywać je w pliku ~/.pypirc lub w zmiennych środowiskowych (TWINE_USERNAME, TWINE_PASSWORD). Plik należy wykluczyć z kontroli wersji i zapewnić, aby tylko Państwo mieli do niego dostęp w trybie odczytu.

Przesyłanie do PyPI

Gdy wszystko będzie działać poprawnie w TestPyPI, proszę opublikować pakiet w rzeczywistym indeksie za pomocą polecenia twine upload dist/*. W ciągu kilku chwil pakiet będzie można zainstalować na całym świecie. Nie można cofnąć tej operacji: po usunięciu wersji nie da się ponownie przesłać tej samej wersji.

Wersje są niezmienne

PyPI nigdy nie pozwala nadpisać opublikowanej wersji. Jeśli po publikacji zostanie znaleziony błąd, należy wydać nową wersję, na przykład zwiększyć numer poprawki. Proszę uwzględnić tę zasadę w przepływie pracy, aby nigdy nie znaleźć się w sytuacji bez wyjścia.

published = {'1.0.0', '1.0.1'}
new_version = '1.0.1'
if new_version in published:
    print(new_version, 'already on PyPI - bump and rebuild')
else:
    print(new_version, 'is free to upload')

Weryfikowanie instalacji

Po przesłaniu proszę sprawdzić, czy wszystko działa: utworzyć świeże środowisko wirtualne, uruchomić polecenie pip install mytool, a następnie zaimportować pakiet. Instalacja w czystym środowisku pozwala wykryć brakujące pliki i błędy zależności, których proces budowania nie wykrył.

Zaufane publikowanie

Nowoczesne projekty mogą zrezygnować z ręcznych tokenów dzięki zaufanemu publikowaniu: PyPI uwierzytelnia bezpośrednio przepływ pracy CI, taki jak GitHub Actions, za pomocą OpenID Connect. Nigdzie nie przechowuje się długotrwałego sekretu, co zwiększa bezpieczeństwo.

twine nadal zajmuje się przesyłaniem plików, ale dane uwierzytelniające są krótkotrwałe i wydawane w czasie wykonywania.

Automatyzowanie wydań

Popularna konfiguracja uruchamia wydanie po wypchnięciu do repozytorium tagu git, takiego jak v1.0.0. Przepływ pracy CI buduje pakiet, uruchamia twine check i automatycznie przesyła pliki. Utworzenie tagu staje się jedyną czynnością potrzebną do opublikowania wersji.

Dzięki temu wydania są spójne, a liczba błędów przy ręcznym przesyłaniu maleje.

Szybkie sprawdzenie

Proszę sprawdzić swoją wiedzę na temat publikowania pakietów.

Podsumowanie

Opublikowali Państwo pakiet:

  • pip install twine, a następnie twine check dist/*
  • Przećwiczenie publikowania w TestPyPI przed przesłaniem pakietu do rzeczywistego indeksu
  • Uwierzytelnianie za pomocą tokenu API o ograniczonym zakresie (__token__), nigdy hasła
  • twine upload dist/* publikuje pakiet; wersje są niezmienne, więc aby naprawić błędy, należy zwiększyć numer wersji
  • Weryfikacja za pomocą czystego środowiska i polecenia pip install
Bezpłatny start

Ucz się Python dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
76
Lekcje
320

Często zadawane pytania

Czy lekcja „Publikowanie za pomocą twine” jest bezpłatna?

Tak — pełny tekst „Publikowanie za pomocą twine” 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 „Publikowanie za pomocą twine”?

Przesyłaj pakiety do PyPI Ć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 4 z 4.

Ile czasu zajmuje lekcja „Publikowanie za pomocą twine”?

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