Przewodnik „Python Distribute” (był na python-distribute.org, ale rejestracja wygasła) mówi mi, żebym dołączyć doc/txt
pliki, a .py
pliki są wykluczane z MANIFEST.in
pliku
Dokumentacja sourcedist mówi mi tylko, że sdist używa MANIFEST.in
i zawiera tylko określone przez ciebie .py
pliki i pliki do dołączenia . Mówi mi również, żebym użył: python setup.py sdist --manifest-only
do wygenerowania a MANIFEST
, ale Python mówi mi, że to nie istnieje
Doceniam to, że pochodzą z różnych wersji Pythona, a system dystrybucji jest w kompletnym bałaganie, ale zakładając, że używam Pythona 3 i setuptools
(nowy, który zawiera dystrybucję, ale teraz nazywa się setuptools, a nie stare setuptools, które zostało wycofane tylko z narzędzi do dystrybucji do przywrócenia do dystrybucji i dystrybucji zmieniono nazwę na setuptools .....)
i trzymam się „standardowej” struktury folderów i setup.py
plików,
- Czy potrzebuję
MANIFEST.in
? - Co w nim powinno być?
- Kiedy wszystkie te różne systemy i metody pakietów zostaną połączone w jeden prosty proces?
źródło
sdist
(oznacza: dystrybucję źródła ). Jeśli weźmiesz pod uwagę tobdist
ibdist_wheel
są binarne i przeznaczone do zainstalowania tylko w Twojej ścieżce Pythona, ma to sens. (Gdzie miałyby się znaleźć te nie-modułowe pliki i katalogi? Na/usr/local/lib/python2.7/dist-packages/
pewno nie.) Ale warto o tym wspomnieć, ponieważ mylące jest zobaczenie utworzonego archiwum i nie zawiera on plików.package_data
idata_files
zaleceń, które są poza zakresem, będę kontynuować.package_data
wyświetla listę plików, które są instalowane z pakietem, dodist-packages/yourpackage
których zostałyby pominięte, ponieważ nie mają nazwy * .py.data_files
wyświetla listę plików, które są instalowane poza pakietem. Każdy wpis określa ścieżkę docelową poprzedzoną prefiksem,sys.prefix
jeśli jest względna lub utworzona bezpośrednio (w zależności od uprawnień), jeśli zaczyna się od/
.pbr
jest złym pomysłem.Stare pytanie, nowa odpowiedź:
Nie, nie potrzebujesz
MANIFEST.in
. Aby jednaksetuptools
zrobić to, co (zwykle) masz na myśli, musisz użyć funkcjisetuptools_scm
, która odgrywa rolęMANIFEST.in
w 2 kluczowych miejscach:sdist
polecenia (gdzie wszystkie odpowiednie pliki są zdefiniowane jako „wszystkie pliki pod kontrolą źródła”)include_package_data
do dołączania danych pakietu jako częścibuild
lubbdist_wheel
. (ponownie: pliki pod kontrolą źródła)Historyczne rozumienie
MANIFEST.in
jest następujące: kiedy nie masz systemu kontroli wersji, potrzebujesz innego mechanizmu do rozróżnienia między „plikami źródłowymi” a „plikami, które znajdują się w katalogu roboczym”. Jednak Twój projekt jest pod kontrolą źródła (prawda ??), więc nie ma takiej potrzebyMANIFEST.in
. Więcej informacji w tym artykule .źródło