Вообще говоря, вам не нужны никакие дополнительные сценарии установки для построения дистрибутива.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)