Несколько проектов из одного setup.py? - PullRequest
9 голосов
/ 20 апреля 2009

Мой текущий setup.py (с использованием setuptools) устанавливает две вещи, одна из которых tvdb_api (оболочка API), другая - tvnamer (скрипт командной строки)

Я хочу сделать их доступными по отдельности, чтобы пользователь мог сделать ..

easy_install tvdb_api

.. чтобы получить только API-оболочку, или ..

easy_install tvnamer

.. для установки tvnamer (и tvdb_api, как требование)

Возможно ли это без двух отдельных setup.py скриптов? Можете ли вы иметь два отдельных пакета PyPi, которые поступают из одной и той же команды python setup.py upload ..?

1 Ответ

9 голосов
/ 21 апреля 2009

setup.py - это обычный файл Python, который по соглашению устанавливает пакеты. По соглашению setup.py содержит вызов функции setuptools или distutils setup(). Если вы хотите использовать один setup.py для двух пакетов, вы можете вызвать другую функцию setup() на основе аргумента командной строки:

import sys
if len(sys.argv) > 1 and sys.argv[1] == 'script':
    setup(name='tvnamer', ...)
else:
    setup(name='tvdb_api', ...)

На практике я бы порекомендовал написать два сценария.

...