2009-04-22 17 views
10

Jakie jest magiczne polecenie "python setup.py some_incantation_here", aby przesłać pakiet do PyPI, w formie, którą można pobrać, aby uzyskać oryginalny pakiet w oryginalnej formie?Jak załadować nieskazitelny pakiet Pythona do PyPI?

Mam pakiet z pewnym źródłem i kilkoma plikami obrazu (jako dane_pakietu). Jeśli zrobię "setup.py sdist register upload", plik .tar.gz ma wyłączone pliki graficzne. Jeśli robię "setup.py bdist_egg register upload", jajko zawiera obrazy, ale nie obejmuje pliku setup.py. Chcę móc pobrać przesłany plik, który jest po prostu całością mojego projektu - pseudonim "setup.py the_whole_freaking_thing register upload".

Być może najlepszym sposobem na zrobienie tego jest ręczne tar.gz mój katalog projektu i przesłanie go za pomocą interfejsu sieciowego PyPI?

Zastrzeżenie: Staram się uniknąć konieczności przechowywania prostego projektu, który właśnie utworzyłem w repozytorium SVN, a także w PyPI - wydaje się marnowaniem czasu na śledzenie jego historii i plików w dwóch miejscach .

Odpowiedz

16

Kiedy wykonujesz polecenie "sdist", to co kontroluje listę dołączonych plików, to plik "MANIFEST.in" obok pliku "setup.py", a nie to, co masz na liście "package_data". Ma to coś wspólnego ze schizofreniczną naturą rozwiązań opakowaniowych Python; "sdist" jest zasilany przez distutils w standardowej bibliotece, podczas gdy "bdist_egg" jest kontrolowany przez moduł setuptools.

Aby rozwiązać ten problem, spróbuj utworzyć MANIFEST.in obok pliku setup.py i nadać jej zawartość tak:

include *.jpg 

Oczywiście, jestem obrazowania, że ​​„pliki obrazów” są rzeczywiste obrazy, a nie obrazy dysków lub obrazy ISO lub coś takiego; być może trzeba będzie dostosować powyższą linię, jeśli źle się domyśliłem! Ale zapoznaj się z sekcjądokumentacji distutils i zobacz, czy nie możesz uzyskać tych plików w dystrybucji źródłowej .tar.gz! Powodzenia.

+0

Idealny! "include nosenotify/*. png" to format, którego potrzebowałem, ponieważ moje pliki znajdowały się w podkatalogu - ten format zapewniał, że katalog .tar.gz nosenotify/zawierał swoje pliki .png. –

+2

PS Brandon, ironicznie po przeczytaniu odpowiedzi poszedłem do twojego bloga i zobaczyłem post od jednego dnia przed moim pytaniem, mówiąc, że byłeś tak dość setup.py, że robiłeś pyron. :) –