Настройка среды разработки Python (3 части серии)
В части 1 этой серии мы создали простой пакет распределения Python под названием «pygreet». В части 2 мы написали тесты и запустили их, используя Pтойцы.
Кроме того, Ptyest, мы не устанавливали ничего, что еще не было включено в стандартную библиотеку Python. Часто, однако, у пакета будет иметь несколько зависимостей. Как мы лучше всего справляемся?
Проще говоря, поместите пакетные зависимости в install_requires Список в setup.py Отказ Место Развитие Зависимости, такие как тестовые рамки и лепки, в требования .txt Отказ
Давайте рассмотрим дальше.
Добавьте функцию с зависимостью
Возьмите пакет Pygreit, мы создали и добавили дружескую функцию, рассказывая о времени.
"""Functions useful for sending greetings."""
import arrow
def greet(greeting="Hello", recipient="World"):
"""Greet someone."""
return f"{greeting}, {recipient}"
def greet_city(tz):
"""Greet a location."""
now = arrow.now(tz)
friendly_time = now.format("h:mm a")
location = tz.split("/")[-1].replace("_"," ")
greeting = greet("Hello", location)
greeting += f"! The time is {friendly_time}."
return greeting
Мы добавили две вещи: Импортировать стрелку и greet_city Функция, которая занимает часовой пояс в качестве ввода.
Включите список зависимостей в Install_requires в Setup.py
Потому что стрелка является внешней зависимостью, давайте добавим ее в setup.py :
"""Package configuration."""
from setuptools import find_packages, setup
setup(
name="pygreet",
version="0.1",
packages=find_packages(where="src"),
package_dir={"": "src"},
install_requires=["arrow"],
)
(Re-) Установка пакета также устанавливает зависимости
Как только это сохраняется, установите наш пакет снова (в редактируемом режиме, как и раньше), должен принести стрелку и ее зависимости.
$ pip install -e .
Выходной вывод должен включать «Успешно установленную стрелку …» и другие пакеты, с номерами версий.
Тестовое задание
Мы не можем забыть написать тест на нашу новую функцию. В тесты каталог, Новый файл под названием test_greet_city.py содержит:
import greet
def test_greet_city():
result = greet.greet_city("Asia/Shanghai")
assert "Hello, Shanghai! The time is" in result
Беги pteest В текущем каталоге. Гордиться
Зависимости развития
Итак, поместите зависимые пакеты Ваше программное обеспечение нужно бежать в install_requires Список в setup.py Отказ
Зависимости Вы разработчик хочу, чтобы создать ваше программное обеспечение входить в требования .txt Отказ
Такие как Pтойцы. Конечно, если вы устанавливаете необходимые зависимости в разработке, вы также хотите, чтобы фактический пакет, который вы создаете, а также для установки. Итак, давайте добавим как в требования .txt файл:
-e . pytest
Вы можете запустить этот файл с помощью:
pip install -r requirements.txt
Мне нравится думать о требования .txt Таким образом: список аргументов, каждый из которых передан Пип , построчно. Итак, бежит выше требования .txt Файл эквивалентен:
pip install -e . pip install pytest
Ваше дерево исходного кода должно выглядеть что-то подобное сейчас:
pygreet/ ├── requirements.txt ├── setup.py ├── src │ └── greet.py ├── tests │ ├── test_greet.py │ └── test_greet_city.py └── venv
В следующий раз вы находитесь в свежей системе, вы можете скачать/заказать/потянуть код Python, настроить вашу виртуальную среду, PIP Установить Ваши требования и продолжайте кодирование.
Версии и модернизация
Я решил не указывать версии каждого пакета или верхних/нижних границ для номеров версий. Таким образом, в любое время, I жестяная банка
pip install -Ur requirements.txt
И обновить все пакеты. Это отлично работает, если я не обращаю внимания на разрыв API изменений в любых из зависимых пакетов. Если это произойдет, будет боль.
Руководство по упаковке Python Подробнее Использование обоих install_requires. и требования .txt Отказ
Вы также можете попробовать Пип заморозить Чтобы увидеть версии пакета. Вы можете использовать Пип заморозить Вывод для создания требования .txt Файл с записью версий. Таким образом, не будет никаких сюрпризов, хотя ваши пакеты будут выросли из даты и небезопасно, если вы не обновите версий.
Эта серия вводная в природе, и я надеюсь, что вы найдете это полезным. Пожалуйста, продолжайте исследовать и наслаждаться, Python Packaging и управление зависимостями!
Настройка среды разработки Python (3 части серии)
Оригинал: “https://dev.to/bowmanjd/python-dev-environment-part-3-dependencies-with-installrequires-and-requirements-txt-kk3”