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

Ванильный пакет Python

Самые основные инструменты для разработки приложения Python. Помечено Python, производительность, распределение, учебное пособие.

Это часть серии, описывающая различные способы управления проектом Python. Чтобы узнать, что я подразумеваю под «стеком зависимостей», проверьте первый пост .

Ванильный стек является самым основным выбором, используя стандартные и рекомендуемые инструменты Python. В результате это самый стабильный, и самый сложный в использовании вариант. Вы должны сделать большую часть работы самостоятельно.

  • пипс : Установщик пакета для Python. Используется для установки зависимостей.
  • требования .txt : Файл, используемый для объявления зависимостей для проекта
  • dev_requirements.txt: используется для объявления зависимостей для разработчиков (не потребителей). Тот же формат как требования.
  • setup.py : Файл используется для установки метаданных для и создания пакета
  • seturgools : Используется для создания вашего проекта
  • шпагат : Используется для загрузки вашего проекта на Pypi Server
  • Венв : Используется для создания виртуальных сред

Стог ванили содержит все самые основные инструменты для управления проектом Python. Когда вы Google «Как», это инструменты, которые вы, вероятно, найдете ссылки. Как вы можете увидеть список компонентов, есть много движущихся частей. Поскольку большинство задач разбиты на отдельные пакеты, этот стек является самым сложным для изучения и наиболее гибкого.

TL; DR 😩

Опыт развития грубый. Если будет продуктивным во время разработки, является ваша основная цель, выберите другой стек (в ближайшее время посты).

Определение требований

  • 😐 Зависимости dev: с этим стеком, если вы хотите отделить зависимости, необходимые только для разработчиков (например, структуру тестирования) от зависимостей, необходимых для запуска вашего приложения, вы должны поместить их в разные файлы.
  • 😞 Воспроизводимость: с форматом требований вы должны сделать выбор. Вы можете либо установить каждую зависимость от определенной версии ( == 1.2.3 ), что означает, что вы должны вручную искать обновления вручную вручную, если вы хотите исправить ошибки, или вы должны указать только совместимость ( ~ ~ = 1.2.3 ) Это означает, что вы не можете гарантировать, что все разработчики работают с одинаковыми версиями (или что развернутое приложение будет иметь одни и те же версии!) Приводя к страшным «это работает на моей машине».
  • ✍️. Добавление новых пакетов: нет никакого хорошего способа добавить новый пакет, вам просто нужно записать его в файл ваших требований вручную (что означает, что вы должны знать, какую версию вы хотите заранее), затем установите из этого файла требований Отказ
  • 🥴 Альтернативные источники: вы определенно можете определить требования со всех обычных мест, но синтаксис является своего рода повсюду
    • Чтобы добавить частную PYPI REPO, вам нужно добавить строку в верхнюю часть вашего файла, который выглядит что-то вроде - Extra-index-url = https://pypi.org/simple/
    • Добавить зависимость Git: -e Git://github.com/ .git @ # яйцо =
    • Установить из локального пути: -e/путь/к/пакет

Виртуальные среды

  • 🙂 Настройка: Создание виртуальной среды довольно проста с Python 3 (пару больше шагов с Python 2). Вы просто запустите модуль VINV с пути, который вы хотите, чтобы поставить Venv, как python3 -m venv .venv
  • 🧟 Использование: на самом деле делать вещи в виртуальной среде по умолчанию, является монотонной и отличающейся в зависимости от вашей платформы. Вы найдете себя вводить те же команды снова и снова.
    • Установка требований:
      • Windows: .venv \ scripts \ pip.exe установить -r dev_requirements.txt
      • MacOS/Linux: .venv/bin/pip instate -r dev_requirrements.txt
    • Запуск скрипта:
      • Windows: .venv \ scripts \ python.exe script.py
      • MacOS/Linux: .venv/bin/python script.py
    • Активация окружающей среды (чтобы запустить другие команды более простыми)
      • Windows: .venv \ scripts \ активировать
      • MacOS/Linux: Источник .VENV/BIN/ACTIVATE
      • Деактивация (обе платформы): дезактивировать

TL; DR 😩

Вопреки Дзэн Питона 🧘, есть несколько неочевидных и сложных методов для распределения с использованием стека ванили. Если вы собираетесь развернуть источник, это нормально. Если вы собираетесь создать свой проект для любого другого дистрибутива, есть лучшие варианты.

Строить

  • 🤔 Определения: все метаданные о вашем проекте сделаны в setup.py Файл, который, как вы уже догадались, является сценарий Python. Все входит в функциональный вызов, который не является особенно читаемым форматом. Вы можете объявить требования прямо здесь, но лучше указывать на этот файл по вашим требованиям. Таким образом, у вас есть один источник правды.
  • 🙄 Строительство: Для того, чтобы на самом деле упаковать свой пакет, чтобы вы могли распространять его, вам, вероятно, нужно будет запустить команду python setup.py sdist bdist_wheel , супер неочевидная команда, которую вы, вероятно, захотите псевдоним, чтобы облегчить жизнь. Это создаст колесо и а Распределение источника для последующего использования.

Развертывать

  • 🥵 pypi: развертывание pypi требует, чтобы вы использовали еще один другой инструмент, на этот раз шпагат . Для публичных Pypi Reppo это выглядит как Python -M-шпагат Загрузить Dist/* Отказ Если вы загружаете в частный REPO PYPI, вам нужно иметь учетные данные в вашу переменные окружающей среды или .pypirc или ключей (опять же, несколько вариантов без четкого победителя) и добавить --repository-URL вариант.
  • 😸 Распределение источника: Это, безусловно, самый простой способ развертывать приложение, используя этот стек. Просто скопируйте источник туда, где он собирается, установите из требований. Atxt, и вы закончите. Не нужно устанавливать дополнительные инструменты перед настройкой.
  • 😇 Достроенные зависимости: почти так же просто, как распределение источника, Пип Дает пару легких методов для подключения ваших зависимостей вашего приложения. Это Super полезно, если вы пытаетесь создать настольное приложение или для многоступенчатого докера. Вы можете сделать PIP Установка --Target Build/-R требования .txt Чтобы установить все ваши требования в папку. Или вы можете сделать PIP скачать --dest build/-r требования .txt (Почему dest вместо цели?) Для загрузки построенных требований (например, колесо ы) в папку.

Ванильный стек … хорошо. Он включает в себя много разных инструментов, непоследовательный синтаксис и субъективно сложно читать форматы файлов. У него нет файла «блокировки», как два других стека, о которых я выложу в будущем, что означает, что зависимости являются либо менее предсказуемыми, либо менее полезными. На ростом, многие инструменты требуются (например, Pip и Венв ) включены с большинством Python устанавливаются, поэтому вам не нужно идти и получить их. Они также хорошо поддерживаются и «стабильные» инструменты (по какой-то причине разработчики PIP любят удалять функции, которые я использую).

Оригинал: “https://dev.to/dbanty/vanilla-python-stack-99a”