Veo más y más comandos como este:
$ pip install "splinter[django]"
¿Qué hacen estos corchetes?
Veo más y más comandos como este:
$ pip install "splinter[django]"
¿Qué hacen estos corchetes?
pip install "splinter[django]"
, para evitar cualquier expansión accidental de la capa del patrón.
Respuestas:
La sintaxis que está utilizando es:
pip install "project[extra]"
En su caso, usted es installing
el splinter
paquete que tiene soporte adicional para django
. Los corchetes ( []
) no son una sintaxis específica, solo una convención. En realidad, se está instalando el paquete denominado: "splinter[django]"
.
Una explicación de @chetner
:
El comando
pip install splinter django
instalaría dos paquetes llamadossplinter
ydjango
.splinter[django]
, por otro lado, instala una variante delsplinter
paquete que contiene soporte paradjango
. Tenga en cuenta que no tiene nada que ver con eldjango
paquete en sí, sino que es solo una cadena definida por elsplinter
paquete para un conjunto de características en particular que se habilita.
extra
significa?
splinter
y django
. splinter[django]
, por otro lado, instala una variante del splinter
paquete que contiene soporte para django
. Tenga en cuenta que no tiene nada que ver con el django
paquete en sí, sino que es solo una cadena definida por el splinter
paquete para un conjunto de características en particular que se habilita.
splinter
sigue siendo el nombre del paquete; pip
por sí mismo lo analiza splinter[django]
y lo reconoce como un nombre de paquete con un "argumento" adicional para ayudarlo a instalar los archivos correctos. La forma en que django
se interpreta el argumento depende completamente del setup.py
archivo (¿o algún otro archivo de configuración? En realidad, no conozco los detalles) utilizado para definir el paquete splinter
.
pip install splinter
instalará menos requisitos que pip install splinter[django]
. Los paquetes adicionales que están instalados pueden de hecho (y probablemente lo hagan) permitir que funciones adicionales de splinter funcionen, pero no cambia nada sobre el paquete splinter en sí. Solo le dice a pip sobre dependencias adicionales.
[optional]
en PIP significan dependencias opcionalesEn caso de que aparezca otro desarrollador que busque implementar este patrón en su propia implementación de paquete de Python, aquí hay una explicación más detallada de brackets []
in pip.
Para instalar airflow
desde pip usamos este comando:
pip install 'apache-airflow'
Puede instalar componentes opcionales de flujo de aire con:
pip install 'apache-airflow[aws]'
# [optional] -----------^
Cuando buscamos PyPI para la apache-airflow
nota que los paquetes opcionales no aparecen:
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
Puede ver cómo se logró esto en el setup.py
script
A la izquierda en setup.py
- extras_require
está definido.
A la derecha están los comandos de instalación correlacionados para estos subpaquetes opcionales.
Estoy bastante seguro de que estos son extras de herramientas de configuración:
A veces, un proyecto tiene dependencias "recomendadas", que no son necesarias para todos los usos del proyecto. Por ejemplo, un proyecto puede ofrecer salida en PDF opcional si ReportLab está instalado y soporte reStructuredText si está instalado docutils. Estas funciones opcionales se denominan "extras" ...