Widzę coraz więcej takich poleceń:
$ pip install "splinter[django]"
Co robią te nawiasy kwadratowe?
Widzę coraz więcej takich poleceń:
$ pip install "splinter[django]"
Co robią te nawiasy kwadratowe?
pip install "splinter[django]", aby uniknąć przypadkowego rozszerzenia powłoki wzoru.
Odpowiedzi:
Używana składnia to:
pip install "project[extra]"
W twoim przypadku, jesteś pakiet, który ma dodatkową obsługę . Nawiasy kwadratowe ( ) nie są specyficzną składnią, tylko konwencją. Naprawdę, instalujesz pakiet o nazwie: .installingsplinterdjango[]"splinter[django]"
Wyjaśnienie od @chetner:
Polecenie
pip install splinter djangozainstalowałoby dwa pakiety o nazwachsplinteridjango.splinter[django]Z drugiej strony, instaluje wariantsplinterpakietu, który zawiera wsparcie dladjango. Zauważ, że nie ma to nic wspólnego z samymdjangopakietem, ale jest po prostu ciągiem znaków zdefiniowanym przezsplinterpakiet dla określonego zestawu funkcji, który zostanie włączony.
extraznaczy?
splinteri django. splinter[django]z drugiej strony instaluje wariant splinterpakietu, który zawiera obsługę django. Zauważ, że nie ma to nic wspólnego z samym djangopakietem, ale jest po prostu ciągiem znaków zdefiniowanym przez splinterpakiet dla określonego zestawu funkcji, który zostanie włączony.
splinterjest nadal nazwą pakietu; pipsama analizuje splinter[django]i rozpoznaje go jako nazwę pakietu z dodatkowym „argumentem”, aby pomóc mu zainstalować prawidłowe pliki. Sposób djangointerpretacji argumentu zależy wyłącznie od setup.pypliku (lub innego pliku konfiguracyjnego? Właściwie nie znam szczegółów) użytego do zdefiniowania pakietu splinter.
pip install splinterże zainstaluje mniej wymagań niż pip install splinter[django]. Dodatkowe pakiety, które są instalowane, mogą rzeczywiście (i prawdopodobnie to robią) włączać dodatkowe funkcje splinter, ale nie zmienia to niczego w samym pakiecie splinter. Po prostu informuje pip o dodatkowych zależnościach.
[optional]w PIP oznaczają opcjonalne zależnościNa wypadek, gdyby pojawił się inny programista, który chciałby zaimplementować ten wzorzec we własnym wdrożeniu pakietu Python, oto dalsze wyjaśnienie procesu brackets []in pip.
Aby zainstalować airflowz pip , używamy tego polecenia:
pip install 'apache-airflow'
Możesz zainstalować opcjonalne komponenty przepływu powietrza za pomocą:
pip install 'apache-airflow[aws]'
# [optional] -----------^
Kiedy szukać PyPI dla apache-airflowpamiętać, że opcjonalne pakiety nie pojawi się:
pip search 'apache-airflow'
apache-airflow (1.10.9) - Programmatically author, schedule and monitor data pipelines
pylint-airflow (0.1.0a1) - A Pylint plugin to lint Apache Airflow code.
swe-airflow-tools (0.0.3) - Tools for Apache Airflow Application
airflow (0.6) - Placeholder for the old Airflow package
...
setup.pyMożesz zobaczyć, jak to zostało zrobione w setup.py skrypcie
Po lewej stronie setup.py- extras_requirejest zdefiniowane.
Po prawej stronie znajdują się skorelowane polecenia instalacyjne dla tych opcjonalnych pakietów podrzędnych.
Jestem pewien, że są to dodatki do setuptools:
Czasami projekt ma „zalecane” zależności, które nie są wymagane do wszystkich zastosowań projektu. Na przykład projekt może oferować opcjonalne wyjście PDF, jeśli zainstalowany jest ReportLab, i obsługę reStructuredText, jeśli zainstalowano docutils. Te opcjonalne funkcje nazywane są „dodatkami” ...
Może warto wiedzieć, że ta opcjonalna składnia pakietu dopuszcza wiele dodatków (oddzielonych przecinkiem w nawiasach), jak w:
python -m pip install SomePackage[PDF,EPUB] # multiple extras
Zgodnie z instrukcją pip