Я вижу все больше и больше таких команд:
$ pip install "splinter[django]"
Что делают эти квадратные скобки?
python
pip
dependency-management
Бабкен Варданян
источник
источник
pip install "splinter[django]"
, чтобы избежать случайного расширения оболочки шаблона.Ответы:
Синтаксис, который вы используете:
pip install "project[extra]"
В вашем случае, вы пакет , который имеет дополнительную поддержку . Квадратные скобки ( ) - это не конкретный синтаксис, а просто соглашение. На самом деле, вы устанавливаете пакет с именем: .
installing
splinter
django
[]
"splinter[django]"
Объяснение от
@chetner
:источник
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.Например: Apache Airflow
Для установки
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
определяется.Справа показаны соответствующие команды установки для этих необязательных подпакетов.
источник
Уверен, что это дополнительные средства настройки:
https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies
источник
Это именно список из
setup.py
файла для проекта в вопросе :"django": ["Django>=1.7.11;python_version<'3.0'", "Django>=2.0.6;python_version>'3.3'", "lxml>=2.3.6", "cssselect", "six"],
источник