2009-04-20 14 views
7

Moje obecne setup.py (używając setuptools) instaluje dwie rzeczy, jedna jest tvdb_api (an otoki API), drugi jest tvnamer (skrypt z linii poleceń)Wiele projektów z jednego pliku setup.py?

życzę, aby dwa dostępne oddzielnie, więc użytkownik może zrobić ..

easy_install tvdb_api 

..to się tylko opakowanie API, lub ..

easy_install tvnamer 

..to zainstalować tvnamer (i tvdb_api jako wymóg)

Czy jest to możliwe bez posiadania dwóch oddzielnych skryptów setup.py? Czy możesz mieć dwa oddzielne pakiety PyPi, które pochodzą z tego samego polecenia python setup.py upload?

+2

Co jest nie tak z dwoma skryptami setup.py? –

+0

Yeh, to wydaje się być sposobem na zrobienie tego. – dbr

Odpowiedz

9

setup.py to zwykły plik w języku Python, który zgodnie z konwencją tworzy pakiety. Zgodnie z konwencją setup.py zawiera wywołanie funkcji settools lub distutils setup(). Jeśli chcesz skorzystać z jednej setup.py dla dwóch pakietów, można wywołać inną setup() funkcję w oparciu o argument wiersza poleceń:

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

Praktycznie jednak, ja polecam tylko pisanie dwa skrypty.

+0

'sys.args' nie istnieje, czy miałeś na myśli' sys.argv'? – ncocacola

+0

@ ncocacola: tak, właśnie to musi mieć mięso. Naprawiłem literówkę. –

+0

Podejrzewam, że to nie zadziała bez 'pop' -gu pierwszego argumentu. W przeciwnym razie IMO setup() potraktuje go jako jeden z parametrów interfejsu wiersza poleceń setup. – NirIzr

Powiązane problemy