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

Python Dev Environment Part 3: Зависимости с Install_requires и требованиями.

В части 1 этой серии мы создали простой пакет распределения Python под названием «pygreet». В части 2 … с меткой Python.

Настройка среды разработки 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”