Введение

Эта лабораторная работа знакомит с файлом setup.py — фундаментальным компонентом для упаковки проектов на Python с использованием традиционной библиотеки Distutils. Вы узнаете о его назначении, структуре и о том, как его использовать для того, чтобы сделать ваши модули Python устанавливаемыми. По завершении этой работы вы создадите базовый файл setup.py и используете его для установки простого пакета Python.

Введение

На этом шаге вы поймете роль скрипта setup.py как центра всей активности по сборке, распространению и установке модулей с помощью Distutils.

Скрипт setup является ядром сборки, распространения и установки модулей с использованием Distutils. Его основная цель — описать ваше распределение модулей для Distutils, чтобы различные команды, работающие с вашими модулями, выполняли нужные действия.

Файл setup.py находится в основе проекта на Python. Он описывает все метаданные о вашем проекте. Хотя вы можете добавить множество полей для предоставления богатых метаданных, требуются только три:

  • name: Имя вашего пакета. Оно должно быть уникальным, если вы хотите опубликовать свой пакет в Python Package Index (PyPI).
  • version: Текущая версия вашего пакета. Это помогает пользователям различать разные релизы.
  • packages: Список всех пакетов Python, которые должны быть включены в ваше распределение.

Как только у вас появится файл setup.py, вы сможете легко установить пакет Python в вашу среду. Рекомендуемый способ — использовать pip для установки пакета из текущего каталога. Выполните следующую команду в терминале, находясь в том же каталоге, что и файл setup.py:

pip install .

Эта команда обработает процесс сборки и установки модуля, чтобы его можно было импортировать и использовать в других скриптах Python. На следующем шаге мы создадим файл setup.py и выполним эту команду.

Пример

На этом шаге мы рассмотрим базовый пример скрипта setup.py и создадим его для нашего проекта. Этот пример будет включать требуемые поля, а также необязательную информацию, такую как лицензия и длинное описание, считываемое из файла README.txt.

Сначала перейдите в подготовленную для вас директорию проекта. Используйте проводник файлов в левой части IDE, чтобы увидеть директорию pythonCheatsheet. Внутри вы найдете поддиректорию pipenv и файл README.txt.

Теперь создайте новый файл с именем setup.py внутри директории ~/project/pythonCheatsheet. Нажмите на папку pythonCheatsheet в проводнике файлов, затем нажмите на значок "New File" (Новый файл) и назовите его setup.py.

Скопируйте и вставьте следующий код в ваш только что созданный файл setup.py:

## setup.py: define package metadata for distribution
from distutils.core import setup

setup(
   name='pythonCheatsheet',  ## Package name (must be unique on PyPI)
   version='0.1',  ## Version number
   packages=['pipenv',],  ## List of packages to include
   license='MIT',  ## License type
   long_description=open('README.txt').read(),  ## Read description from file
)

Разберем этот скрипт:

  • from distutils.core import setup: Эта строка импортирует функцию setup, которая является основной точкой входа для скрипта.
  • name='pythonCheatsheet': Определяет имя нашего пакета.
  • version='0.1': Устанавливает начальную версию.
  • packages=['pipenv',]: Сообщает Distutils, что включаемый пакет находится в директории pipenv.
  • license='MIT': Указывает лицензию, под которой распространяется пакет.
  • long_description=open('README.txt').read(): Считывает содержимое README.txt для предоставления подробного описания пакета.

Теперь, когда файл setup.py готов, откройте терминал, нажав на значок + на панели терминала в нижней части IDE. Убедитесь, что ваша текущая директория — ~/project/pythonCheatsheet. Вы можете перейти в нее, выполнив команду cd ~/project/pythonCheatsheet.

Выполните команду установки:

pip install .

Вы увидите вывод в терминале, пока pip собирает и устанавливает пакет. Вывод будет выглядеть примерно так, завершаясь подтверждением того, что пакет установлен:

Processing /home/labex/project/pythonCheatsheet
Building wheels for collected packages: pythonCheatsheet
  Building wheel for pythonCheatsheet (setup.py) ... done
  Created wheel for pythonCheatsheet: pythonCheatsheet-0.1-py3-none-any.whl
  Stored in directory: /tmp/pip-wheel-xxxxx
Successfully built pythonCheatsheet
Installing collected packages: pythonCheatsheet
Successfully installed pythonCheatsheet-0.1

Чтобы подтвердить установку, вы можете использовать pip для вывода списка установленных пакетов и фильтрации по вашему новому пакету:

pip list | grep pythonCheatsheet

Вы должны увидеть свой пакет в списке с его версией:

pythonCheatsheet  0.1

Поздравляем! Вы успешно создали файл setup.py и установили пакет Python.

Резюме

В этой лабораторной работе вы узнали об основополагающей роли скрипта setup.py в распространении проектов на Python с использованием Distutils. Вы рассмотрели основные поля метаданных, необходимые для пакета: name, version и packages. Наконец, вы создали практический файл setup.py, включили дополнительные метаданные, такие как license и long_description, и успешно установили свой пакет в локальную среду с помощью команды pip install .. Теперь у вас есть базовые знания для того, чтобы сделать ваши собственные проекты на Python распространяемыми.