Несколько конфигураций установки для пакета Python - PullRequest
3 голосов
/ 28 ноября 2011

Я работаю над созданием пакета Python, который является несколько модульным по природе, и мне было интересно, как лучше всего работать с несколькими конфигурациями установки?

Возьмите следующее setup.py для пакетапростой анализатор документов:

setup(
    name = 'my_document_parser',
    ...
    entry_points = {
        'my_document_parser.parsers': [
            'markdown = my_document_parser.parsers.misaka:Parser [misaka]',
            'textile = my_document_parser.parsers.textile:Parser [textile]'
        ]
    },
    install_requires = [
        'some_required_package'
    ],
    extras_require = {
        'misaka' = ['misaka'],
        'textile' = ['textile']
    },
    ...
)

Я хотел бы сделать что-то вроде следующего доступным:

  • Установка по умолчанию
    • python setup.py install или pip install my_document_parser
    • устанавливает my_document_parser, some_required_package, misaka
  • Простая установка
    • что-то вроде python setup.py install --bare
    • устанавливает my_document_parser, some_required_package
  • Способ включения других зависимостей
    • что-то вроде python setup.py install --bare --with-textile
    • устанавливает my_document_parser, some_required_package, textile

Я впервые зацикливаюсь на пакетах Python с точки зрения разработчика, поэтому я открыт для всего, что кто-либо может предложить, если я 'Я поступаю неправильно или что-то в этом роде.

Спасибо.

1 Ответ

0 голосов
/ 29 ноября 2011

Установка по умолчанию установит все в ваши install_requires и packages разделы. Пакеты в extras_require никогда не будут установлены вашим скриптом setup.py; только если вы создадите некоторую логику для такого рода установки.

По умолчанию setuptools и distutils не имеют возможности явно сказать "установить, используя эти разделы моего вызова установки". Вы должны будете реализовать самостоятельно.

pip всегда устанавливает пакеты, используя без параметров для setup.py , но - с единственной версией, управляемой извне , чтобы setuptools никогда не создавать .egg файл.


Заключение : если вы хотите, чтобы люди устанавливали ваш пакет с помощью pip, забудьте --bare и --with-textile. Лучшее, что вы можете сделать, - это полная установка, включающая misaka и textile в качестве зависимостей.

Может быть, вам следует прочитать Руководство автостопом по упаковке , в частности Создание пакета раздел и setuptool спецификация - это довольно хороший, он охватывает все, что может сделать setuptools.

...