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