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

Как испечь пакет Python Cake🐍+📦 = 🎂

Давайте испечь торт на упаковке 🎂! Тебе понадобится… Ингредиенты пункт Местоположение Описание … Tagged with Python, Today Shipeared, DevOps, Tuperial.

Давайте испечь торт на упаковке 🎂! Тебе понадобится…

Ингредиенты

библиотека или приложение ./src/tme library или application]/[Ваш код] Ваш код, который делает что -то полезное или веселое
pyproject.toml ./pyproject.toml Построить информацию о конфигурации
setup.cfg ./setup.cfg Метаданные пакета для PYPI (имя вашего проекта и т. Д.)
Readme.md или readme.rst ./Readme.md или ./Readme.rst Краткие документы для вашего пакета показывают на PYPI
.gitignore ./.gitignore Вещи, которые вам не нужны в GIT, включая некоторые артефакты сборки.
Лицензия или лицензия.txt ./License или ./license.txt Лицензия проекта сообщает другим, как они могут использовать вашу работу
setup.py ./setup.py Технически необязательно, вы захотите это, чтобы вы могли лучше разрабатывать локально

Рецепт торта с пирогом 📋

  • Добавьте один ЛИЦЕНЗИЯ или Лицензия.txt файл. Выбор лицензии может быть сложным, но есть инструменты, которые помогут, например, Выберите лицензию Анкет
MIT License

Copyright (c) 2021 Cake Packaging Foundation.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
  • Добавьте один pyproject.toml файл. Если вы не создаете собственный код или используете альтернативную систему сборки (то есть поэзию), вы можете скопировать и вставить его.
[build-system]
requires = [
    "setuptools>=42",
    "wheel"
]
build-backend = "setuptools.build_meta"
  • Добавьте один setup.cfg Анкет Здесь вы указате информацию, которая появляется на PYPI, и что важно для работы вашего пакета.
# This is essentially a static version of setuptools.setup() and is the
# preferred method of indicating package metadata.
# https://packaging.python.org/guides/distributing-packages-using-setuptools/#setup-args

[metadata]
# A unique name for your package. Search through PyPI for duplicates.
name = packagecake

# Here you use SemVer for versioning - https://semver.org/
# You can also get fancy and pull this value from a file
# like so attr: packagecake.__version__
version = 1.0.0

# Your name or the organization's name. You can actually leave out the
# email and PyPI will still accept your package.
author = Example Author
author_email = author@example.com

# This is your sales pitch, your one-liner, your logline. Make it count
description = Turn your package into a delicious cake in less than 100ms

# Set this to the file you want displayed on PyPI.
# content-type can also be text/x-rst, or text/plain
long_description = file: README.md
long_description_content_type = text/markdown

# This will show in PyPI as your package's Homepage link
url = https://github.com/pypa/sampleproject

# These links will show up in PyPI under the Homepage link.
# Include at least Tracker.
project_urls =
    Tracker = https://github.com/pypa/sampleproject/issues
    Documentation = https://example.com/docs
    Source = https://github.com/pypa/sampleproject/
    Funding = https://example.com/funding
    Custom URL = https://example.com/

# Classifiers - https://pypi.org/classifiers/
# Make sure to include your license
classifiers =
    Development Status :: 3 - Alpha
    Intended Audience :: Developers
    License :: OSI Approved :: GNU General Public License v3 (GPLv3)
    Programming Language :: Python
    Programming Language :: Python :: 3
    Programming Language :: Python :: 3 :: Only
    Programming Language :: Python :: 3.8
    Programming Language :: Python :: 3.9
    Operating System :: OS Independent
    Topic :: Utilities

[options]
# Path to our libary/application
package_dir =
    = src
packages = find:

# Version of Python needed to use the package
python_requires = >=3.8

# Our package depends on these other external packages
install_requires =
    requests == 2.25.1

[options.packages.find]
where = src
  • Добавьте один Readme.md или Readme.rst Анкет Кратко документируйте свой инструмент, давая пользователям вкус того, что они могут сделать с ним. Затем укажите на свои полнометражные документы по ссылке. Вы захотите сэкономить документы на полную длину для другого сайта, так как у PYPI есть некоторые ограничения, особенно со ссылками на заголовки раздела. В качестве альтернативы, вы можете сделать файл только для PYPI и оставить свой Readme приятным и подробным для вашего репозитория GitHub.
# Package Cake 🎂

**Package Cake** is a simple utility that takes your package and turns it
into a cake 🍰.

Checkout the [documentation](https://example.com/docs).

-> Add installation example here <-

-> Usage example here <-
  • Добавьте один .gitignore . Вы захотите обновить свой .gitignore Файл, чтобы исключить некоторые из артефактов сборки.
# Packaging
dist
build
*.egg-info/
  • Добавьте один setup.py Анкет В то время как setup.cfg обрабатывает статические значения, setup.py для динамических метаданных. Милая setup.cfg когда возможно. Вы, однако, хотите использовать setup.py Чтобы помочь вам протестировать свою посылку локально. Читайте дальше, чтобы увидеть, как вы можете проверить.
import sys

from setuptools import setup

if sys.version_info < (3, 8, 0):
    sys.exit("Python 3.8.0+ Required")

setup()
  • Добавьте одну библиотеку или приложение. Вот почему вы публикуете, и вы захотите поместить это в определенное место.
./src/[python package name]
    /__init__.py <- control your package's namespace
    /__main__.py <- optionally allow your package to be invoked from the command line
    /[your modules]

Выпекать, пока не будет построено 🔥

Далее вы собираетесь построить посылку в Колесо и Архив источника Анкет

A Колесо это построенное распределение. Если у вас есть двоичные файлы, в колесе будут предварительно скомпилированные копии. Это делает его гораздо более быстрым процессом для пользователей, чтобы встать и работать с вашим пакетом.

Архив источника Содержит необработанный исходный код пакета, и давайте PIP или пользователь выполняют любую компиляцию локально. Колеса, как правило, предпочтительнее в большинстве случаев использования.

  • Создать виртуальную среду

Unix/macOS

cd [your project]
python3 -m venv venv
source venv/bin/activate

Окна

cd [your project]
py -m venv venv
.\venv\Scripts\activate
  • Установить и запустить сборка Анкет Это генерирует ./Build и ./dist каталог в корне вашего проекта, а также создание .whl и .tar.gz распределительный пакет. Наконец, вы также увидите .egg-info каталог в вашем ./src/try project] каталог.
pip install build
python -m build
./build
./dist
    /packagecake-1.0.0-py3-none-any.whl
    /packagecake-1.0.0.tar.gz
./src/[python package name]
    /packagecake.egg-info

Публикуйте свой пакет торт 🌐

Теперь, когда наш торт на пакете построен, вы захотите загрузить его в PYPI. Я настоятельно рекомендую проверить конфигурацию вашего пакета, первая публикация в Тест PYPI .

  • В вашей виртуальной среде установка шпагат Анкет
pip install twine
  • Убедитесь, что номер версии правильно увеличен. Вы можете сохранить номер версии в setup.cfg , setup.py , или как __version__ в одном из других ваших файлов. Убедитесь, что все они обновляются.
   # setup.cfg
   [metadata]
   name = packagecake
   version = 1.0.1
  • Создать Аккаунт PYPI .

  • Создайте токен API из PYPI. При желании настроить файл учетных данных для хранения токена вашего API.

# [user home directory]/.pypirc
[testpypi]
username = __token__
password = 

[pypi]
username = __token__
password = 
  • Публикуйте пакет
twine upload dist/*

# For Test PyPI
twine upload --repository testpypi dist/*

Попробуйте пирог с упаковкой 🍽

Вы захотите скачать и протестировать пакет сейчас. Давайте также посмотрим, как вы можете протестировать перед публикацией.

  • Скачать и проверить публикацию.
pip install packagecake

# For Test PyPI. No deps is safer, though you can only verify package contents
pip install --index-url https://test.pypi.org/simple/ --no-deps packagecake
python
>>> import packagecake
🥮

# or if running from command-line

python -m packagecake
🍰

А теперь то, что вы можете сделать, прежде чем публиковать. Это позволит вам импортировать и запустить свой пакет, как будто он был загружен с пип . Это называется редактируемый упаковка. Затем вы можете выполнить шаги, которые вы сделали выше, чтобы проверить пакет.

python -m pip install -e .

Мой первый пакет Python 🐣

Я надеюсь, что это поможет вам опубликовать ваш пакет. Несколько быстрых ресурсов, на которые я хочу указать, которые помогли мне, и, конечно, ссылку на пакет, который я создал/запекал 😊.

Sirfuzzalot/pywhoami

Простой сервер анализа запросов HTTP

Pywhoami вдохновлен whoami Go Server от Traefik Labs . Отправьте запрос в одну из конечных точек, чтобы вернуть подробную информацию из вашего HTTP -запроса. С pywhoami Вы можете помочь ответить на такие вопросы, какие заголовки были добавлены к моему первоначальному запросу прокси -сервером.

Использование пакета PYPI

Установка

избиение

python3 -m pip install pywhoami

PowerShell

py -m pip install pywhoami

Запуск сервера

избиение

>>> python3 -m pywhoami
[2021-04-17 15:00:25 -0700] [4400] [INFO] Running on http://127.0.0.1:8080 (CTRL + C to quit)

PowerShell

>>> py -m pywhoami
[2021-04-17 15:00:25 -0700] [4400] [INFO] Running on http://127.0.0.1:8080 (CTRL + C to quit)

Отправьте ему тест HTTP -запрос.

Обложка Кредит: Домоник Давенпорт

Оригинал: “https://dev.to/sirfuzzalot/how-to-bake-a-python-package-cake-46l5”