Могут ли быть файлы setup.py для подпакетов Python? - PullRequest
0 голосов
/ 05 июня 2018

Я видел, что у scipy есть файлы setup.py внутри его подпакетов.Что делают эти файлы setup.py?Используется ли он для создания подпакетов?

Есть ли какая-либо документация или веб-страница, где это объясняется, или как учебное пособие?

1 Ответ

0 голосов
/ 10 июня 2018

Вообще говоря, вам не нужны никакие дополнительные сценарии установки для построения дистрибутива.SciPy требует дополнительных сценариев настройки, главным образом, для уменьшения количества кода конфигурации для конкретного подпакета.Сценарии установки в подпакетах SciPy в основном используются для подготовки конфигурации при сборке всего дистрибутива - сборка и упаковка все еще выполняются из корневого сценария установки.Как описано в NumPy Distutils - Руководство пользователя :

Требования к пакетам SciPy

SciPy состоит из пакетов Python, называемых пакетами SciPy, которые доступны пользователям Pythonчерез пространство имен scipy.Каждый пакет SciPy может содержать другие пакеты SciPy.И так далее.Следовательно, дерево каталогов SciPy - это дерево пакетов с произвольной глубиной и шириной.Любой пакет SciPy может зависеть от пакетов NumPy, но зависимость от других пакетов SciPy должна быть минимальной или нулевой.

Пакет SciPy содержит, помимо своих источников, следующие файлы и каталоги:

  • setup.py --- строительный скрипт
  • __init__.py --- инициализатор пакета
  • tests/ --- каталог юнит-тестов

Их содержимое описано ниже.

Файл setup.py

Чтобы добавить пакет Python в SciPy, его скрипт сборки (setup.py) должен соответствовать определенным требованиям.Наиболее важным требованием является то, чтобы пакет определял функцию configuration(parent_package='',top_path=None), которая возвращает словарь, подходящий для передачи на numpy.distutils.core.setup(..).Чтобы упростить построение этого словаря, numpy.distutils.misc_util предоставляет класс Configuration, описанный ниже.

Пример пакета SciPy pure Python

Ниже приведен пример минимального файла setup.py длячистый пакет SciPy

 #!/usr/bin/env python
 def configuration(parent_package='',top_path=None):
     from numpy.distutils.misc_util import Configuration
     config = Configuration('mypackage',parent_package,top_path)
     return config

 if __name__ == "__main__":
     from numpy.distutils.core import setup
     #setup(**configuration(top_path='').todict())
     setup(configuration=configuration)
...