Публикация пакета Python с GitHub на PyPI в 2024 году

Это мой любимый метод публикации пакета в PyPI на сегодняшний день. Он использует новый метод Trusted Publisher от PyPI, который делает весь процесс очень простым.

Что здесь НЕ рассматривается: написание некоторого количества python и последующая установка его в качестве пакета. Вот несколько постов об этом:

Это предполагает, что у вас есть пакет python, установленный локально, вы знаете, как создать из него .whl-файл (вероятно, запустив python setup.py или python -m build), и хотите найти простой способ превратить его в пакет на PyPI, который другие смогут установить, а затем легко обновлять этот пакет по мере изменения вашего кода.

Step 1: Соберите компонент в виде пакета, включая setup.py/pyproject.toml

В этом посте я покажу пример публикации https://github.com/streamlit/gsheets-connection/, который в настоящее время использует setup.py для определения проекта.

Убедитесь, что имя пакета pypi, который вы планируете использовать, совпадает с именем вашего пакета в setup.py / pyproject.toml

Step 2: Создайте аккаунт на pypi.org, если у вас его еще нет

https://pypi.org/account/register/

Step 3: Создайте файл .github/workflows/publish.yml и зафиксируйте его в своем репозитории

name: Upload Python Package to PyPI when a Release is Created

on:
  release:
    types: [created]

jobs:
  pypi-publish:
    name: Publish release to PyPI
    runs-on: ubuntu-latest
    environment:
      name: pypi
      url: https://pypi.org/p/<PYPI_PACKAGE_NAME>
    permissions:
      id-token: write
    steps:
      - uses: actions/checkout@v4
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.x"
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install setuptools wheel
      - name: Build package
        run: |
          python setup.py sdist bdist_wheel  # Could also be python -m build
      - name: Publish package distributions to PyPI
        uses: pypa/gh-action-pypi-publish@release/v1

Обязательно измените PYPI_PACKAGE_NAME на то, как вы хотите, чтобы пакет назывался на pypi, что должно совпадать со значением имени в вашем pyproject.toml / setup.py

например. https://github.com/streamlit/gsheets-connection/pull/12/files

Step 4: Создайте новый “Отложенный издатель”.

Публикация пакета Python с GitHub на PyPI в 2024 году

https://pypi.org/manage/account/publishing/

Прокрутите вниз до “Добавить нового ожидающего издателя” и заполните имя проекта, владельца, имя репозитория и publish.yml, затем нажмите “Добавить”.

Подробности здесь: https://docs.pypi.org/trusted-publishers/creating-a-project-through-oidc/

Step 5: Создайте новый выпуск

На правой боковой панели github нажмите “Релизы”, а затем “Создать новый релиз”.

Публикация пакета Python с GitHub на PyPI в 2024 году

Посмотрите в setup.py или pyproject.toml и выясните текущий номер версии пакета. Например, 0.0.1

Нажмите “Выбрать тег”, введите v + номер версии (например, v0.0.1) и выберите “Создать новый тег при публикации”.

Нажмите на “Generate release notes”, чтобы автоматически сгенерировать заметки о релизе на основе того, какие PR были объединены с момента последнего релиза.

Нажмите “Опубликовать релиз”!

Step 6: Убедитесь, что релиз работает

Сначала зайдите на вкладку “Действия” в github и посмотрите, как выполняется действие “Загрузить пакет python…”.

Публикация пакета Python с GitHub на PyPI в 2024 году

Если все прошло успешно, вы должны увидеть пакет на pypi! (например. https://pypi.org/project/st-gsheets-connection/)

+1
0
+1
0
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *