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: .installing
splinter
django
[]
"splinter[django]"
Wyjaśnienie od @chetner
:
Polecenie
pip install splinter django
zainstalowałoby dwa pakiety o nazwachsplinter
idjango
.splinter[django]
Z drugiej strony, instaluje wariantsplinter
pakietu, który zawiera wsparcie dladjango
. Zauważ, że nie ma to nic wspólnego z samymdjango
pakietem, ale jest po prostu ciągiem znaków zdefiniowanym przezsplinter
pakiet dla określonego zestawu funkcji, który zostanie włączony.
extra
znaczy?
splinter
i django
. splinter[django]
z drugiej strony instaluje wariant splinter
pakietu, który zawiera obsługę django
. Zauważ, że nie ma to nic wspólnego z samym django
pakietem, ale jest po prostu ciągiem znaków zdefiniowanym przez splinter
pakiet dla określonego zestawu funkcji, który zostanie włączony.
splinter
jest nadal nazwą pakietu; pip
sama analizuje splinter[django]
i rozpoznaje go jako nazwę pakietu z dodatkowym „argumentem”, aby pomóc mu zainstalować prawidłowe pliki. Sposób django
interpretacji argumentu zależy wyłącznie od setup.py
pliku (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ć airflow
z 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-airflow
pamię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.py
Możesz zobaczyć, jak to zostało zrobione w setup.py
skrypcie
Po lewej stronie setup.py
- extras_require
jest 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