Próbuję zrozumieć różnicę między extras_require()
i install_requires()
w pliku setup.py, ale nie można go uzyskać. Obie są używane do instalowania zależności Pythona, ale jaka jest między nimi różnica?Różnica między extras_require() i install_requires() w pliku setup.py?
Odpowiedz
Nie jestem pewien oficjalnego użycia, ale używam extras_require()
do określenia warunkowych zależności.
W moim przypadku -
extras_require={":python_version<'3.5'": ["scandir"]}
Teoretycznie powinno to być dostępne za pośrednictwem samego install_requires()
, ale to działa tylko jak powinno począwszy wersji X.XX (kilka wniosków, co do których wersja zaczyna coraz to prawej) setuptools
.
Ten artykuł wyjaśnia to ładnie: Conditional Python Dependencies
Według setuptools documentation,
extras_require
słownikiem nazw mapowanie „dodatków” (opcjonalne cechy projektu), aby ciągi lub list ciągów określenie, jakie inne dystrybucje muszą być zainstalowane, aby obsługiwać te funkcje.
i
install_requires
Ciąg lub lista ciągów określających co trzeba instalować gdy ten jest inne dystrybucje.
Sekcja na Declaring “Extras” (optional features with their own dependencies) omawia to:
Czasami projekt „Recommended” zależności, które nie są wymagane dla wszystkich zastosowań projektu. Na przykład projekt może oferować opcjonalne wyjście PDF, jeśli ReportLab jest zainstalowany, a obsługa reStructuredText, jeśli zainstalowano docutils. Te opcjonalne funkcje są nazywane "dodatkami", a narzędzia konfiguracji pozwalają także zdefiniować ich wymagania. W ten sposób inne projekty, które wymagają tych opcjonalnych funkcji, mogą wymusić zainstalowanie dodatkowych wymagań, określając pożądane dodatki w ich
install_requires
.
Największą różnicą jest to, że wymagania w extras_require
są instalowane tylko w razie potrzeby:
te wymogi nie zostaną automatycznie zainstalowane, chyba że inny pakiet zależy od nich (bezpośrednio lub pośrednio) przez włączenie pożądany „ dodatki "w nawiasach kwadratowych po powiązanej nazwie projektu. (Lub jeśli dodatki zostały wymienione w specyfikacji wymagań w linii poleceń EasyInstall.)
Więc Podsumowując:
- Jeżeli zależność jest niezbędne uruchomić swój projekt, umieścić go w
install_requires
. Będą zawsze instalowane. - Jeśli twój projekt ma opcjonalne funkcje, które dodają zależności, umieść te zależności w
extras_require
. Te zależności będą zainstalowane, chyba że funkcja ta jest wymagana przez użytkownika lub inną paczkę.