2016-12-21 35 views

Odpowiedz

1

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

3

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ę.