Я бачу все більше і більше таких команд:
$ pip install "splinter[django]"
Що роблять ці квадратні дужки?
Я бачу все більше і більше таких команд:
$ pip install "splinter[django]"
Що роблять ці квадратні дужки?
pip install "splinter[django]"
, щоб уникнути випадкового розширення шаблону оболонки.
Відповіді:
Синтаксис, який ви використовуєте:
pip install "project[extra]"
У вашому випадку, ви пакет , який має додаткову підтримку . Квадратні дужки ( ) не є специфічним синтаксисом, лише домовленістю. На насправді, ви встановлюєте пакет з ім'ям: .installing
splinter
django
[]
"splinter[django]"
Пояснення від @chetner
:
Команда
pip install splinter django
встановить два пакети з іменемsplinter
таdjango
.splinter[django]
, З іншого боку, встановлює варіантsplinter
пакету , який містить підтримку дляdjango
. Зауважте, що це не має нічого спільного з самимdjango
пакетом, а є лише рядком, визначенимsplinter
пакетом для певного набору функцій, який вмикається.
extra
означає?
splinter
та django
. splinter[django]
, з іншого боку, встановлює варіант splinter
пакета, який містить підтримку django
. Зауважте, що це не має нічого спільного з самим django
пакетом, а є лише рядком, визначеним splinter
пакетом для певного набору функцій, який вмикається.
splinter
все ще є назвою пакета; pip
сам аналізує splinter[django]
і розпізнає його як ім'я пакета з додатковим "аргументом", щоб допомогти йому встановити правильні файли. Як django
інтерпретується аргумент , повністю залежить від setup.py
файлу (або якогось іншого конфігураційного файлу? Я насправді не знаю деталей), який використовується для визначення пакету splinter
.
pip install splinter
встановить менше вимог, ніж pip install splinter[django]
. Встановлені додаткові пакети дійсно можуть (і, можливо, роблять це) дозволити працювати додаткові функції splinter, але це не змінює нічого про сам пакет splinter. Він просто повідомляє pip про додаткові залежності.
[optional]
у PIP означають необов’язкові залежностіПро всяк випадок, коли прийде інший розробник, який прагне реалізувати цей шаблон у власному розгортанні пакету Python, ось подальше пояснення brackets []
in pip.
Для встановлення airflow
з pip ми використовуємо цю команду:
pip install 'apache-airflow'
Ви можете встановити додаткові компоненти повітряного потоку за допомогою:
pip install 'apache-airflow[aws]'
# [optional] -----------^
Коли ми шукаємо PyPi для apache-airflow
зазначають , що додаткові пакети не відображаються:
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
Ви можете побачити, як це було зроблено, у setup.py
сценарії
зліва у setup.py
- extras_require
визначено.
Праворуч розташовані відповідні команди встановлення для цих додаткових підпакетів.
Цілком впевнений, що це додаткові додатки до setuptools:
Іноді проект має "рекомендовані" залежності, які не потрібні для всіх видів використання проекту. Наприклад, проект може запропонувати необов’язковий вихід PDF, якщо встановлено ReportLab, та підтримку reStructuredText, якщо встановлені документи. Ці додаткові функції називаються "додатковими послугами" ...