Рубрики
Без рубрики

Как выпустить и опубликовать приложения Python в PYPI

Эйа, ребята, Код этого поста можно найти на GitHub (см. Здесь). Как указано в предыдущих сообщениях … с меткой производительности, DevOps, Tooling, Python.

Эйа, ребята,

Код этого поста можно найти на GitHub (см. здесь ).

Как указано в предыдущих постах, наш проект теперь можно загрузить из GitHub и установить через PIP на локальном уровне. Но пакеты Python обычно устанавливаются из индекса упаковки Python (PYPI) с простым именем, легко запоминающимся.

Итак, как мы можем выпустить наш проект, чтобы другие могли загрузить его удобно? Мы уверены, что наша основная линия находится в выпущенном состоянии, а затем мы

  • Таким образом, отметьте наш проект и придерживайтесь схемы управления версиями
  • Выпустить его на GitHub
  • Выпустите его на PYPI
  1. Теги и выпуск GIT в GitHub
  2. Публикация в PYPI
  3. Автоматизированный выпуск с действиями GitHub

В зависимости от вида/размера разработчиков проекта используют рабочие процессы GIT, работая в качестве команды, но для небольших проектов достаточно работать на основной линии и создавать только филиалы при внедрении функций, которые могут повлиять на стабильность проекта. Таким образом, мы всегда сохраняем основную линию в высвобождаемом состоянии.

Затем мы сможем сделать новый релиз, поскольку мы собрали достаточно исправлений/функций. Разработчики выбирают любого Семантическое управление версией или Календарь версии как схема управления версиями. Мы используем первое и называем наш первый релиз V0.1.0 Анкет Мы указываем на коммит, который хотим освободить, отметив его.

Мы можем использовать легкие или аннотированные теги, которые содержат дополнительные метаданные. Мне нравится использовать легкие метки. Git Tag Теги команды по умолчанию последний коммит. Мы также можем пометить старые коммиты при указании идентификатора коммита (пример: Tag v1.1.0 C52E686 ). В этом случае мы будем пометить последний коммит и втянуть его в удаленное репо.

$ git tag v0.1.0                # git tag 
$ git tag                       # returns a list of all tags
$ git push origin v0.1.0

Теперь мы просматриваем наш путь в репозиторий GitHub и создаем релиз. Мы идем в Выпуски 🠲 Создайте новый релиз и введите тег, который мы хотим освободить. Мы можем добавить двоичные файлы, если мы выпустим проекты, которые используют скомпилированные языки или записи записи. Мне нравится документировать изменения релиза в ChangeLog.md файл.

Наконец, мы публикуем релиз. В следующем разделе мы будем упаковать наш проект и опубликуем его в индексе упаковки Python (PYPI).

Чтобы опубликовать проект Python в PYPI, мы должны упаковать его, генерируя распределение источника (.tar.gz) и распределение колес (.whl).

$ pip install wheel

$ python setup.py sdist bdist_wheel

Сгенерированные файлы можно найти в Dist каталог. Теперь мы должны зарегистрироваться в Pypi Прежде чем мы сможем загрузить наш проект. Для целей тестирования удобно загрузить проект на Testpypi первый. Итак, давайте сделаем это.

$ pip install twine

$ twine upload --repository testpypi dist/*

Теперь давайте проверим установку tihttp Анкет

$ pip install -i https://test.pypi.org/pypi/ --extra-index-url https://pypi.org/simple tihttp

Наши инструменты работают отлично!

$ tihttp -H google.com

И теперь, когда мы уверены, что все работает, пришло время загрузить вещи в PYPI.

$ twine upload --repository pypi dist/*

$ pip install tihttp

Имейте в виду, что вы можете загрузить конкретную семантическую версию только один раз в PYPI, поэтому важно проверить загрузку версии, когда только начинает процесс развертывания для нового проекта. В противном случае вы должны увеличить версию выпуска и повторить процесс (в этом случае мир тоже не закончится).

Оба процесса (выпуск и публикация GitHub в PYPI) могут быть автоматизированы с использованием действий GitHub. Автоматизация здесь не настолько мощная для проекта такого размера, но все же мне очень нравятся действия GitHub, и я хочу позволить вам помнить, насколько это приятно! 😀

Инструкции для рабочих процессов хранятся как Yaml-файл в рамках .github/Workflow/ каталог проекта. Теги можно автоматически выпустить, используя действие GitHub GH-обращение Анкет

name: GH Release

on:
  push:
    tags:
      - 'v*.*.*'

jobs:
  github-release:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: Release
      uses: softprops/action-gh-release@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Как вы можете увидеть, каждый крупный, незначительный или патч -приращение создаст новый релиз.

Наконец, я хочу показать вам более мощный рабочий процесс для автоматической загрузки выпусков в PYPI.

name: Upload Python Package

on:
  release:
    types: [created]

jobs:
  pypi-release:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-python@v2
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install setuptools wheel twine
    - name: Build and publish
      env:
        TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
        TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
      run: |
        python setup.py sdist bdist_wheel
        twine upload dist/*

Чтобы хранить учетные данные, откройте ваш репозиторий на GitHub, а затем перейдите к Настройки 🠲 Секреты 🠲 Новый репозиторий секрет Затем введите имя (например, pypi_username) и его значение.

Хорошо, я надеюсь, что этот пост имел для вас какую -то ценность. Желаю всем отличного дня! 🤠

Оригинал: “https://dev.to/niklastiede/how-to-release-and-publish-python-apps-at-pypi-3nn9”