Vejo mais e mais comandos como este:
$ pip install "splinter[django]"
O que esses colchetes fazem?
Vejo mais e mais comandos como este:
$ pip install "splinter[django]"
O que esses colchetes fazem?
pip install "splinter[django]"
, para evitar qualquer expansão acidental da casca do padrão.
Respostas:
A sintaxe que você está usando é:
pip install "project[extra]"
No seu caso, você é installing
o splinter
pacote que tem suporte adicional para django
. Os colchetes ( []
) não são sintaxe específica, apenas convenção. Realmente, você está instalando o pacote chamado: "splinter[django]"
.
Uma explicação de @chetner
:
O comando
pip install splinter django
instalaria dois pacotes chamadossplinter
edjango
.splinter[django]
, por outro lado, instala uma variante dosplinter
pacote que contém suporte paradjango
. Observe que não tem nada a ver com odjango
pacote em si, mas é apenas uma string definida pelosplinter
pacote para um determinado conjunto de recursos que é ativado.
extra
significa?
splinter
e django
. splinter[django]
, por outro lado, instala uma variante do splinter
pacote que contém suporte para django
. Observe que não tem nada a ver com o django
pacote em si, mas é apenas uma string definida pelo splinter
pacote para um determinado conjunto de recursos que é ativado.
splinter
ainda é o nome do pacote; pip
o próprio analisa splinter[django]
e reconhece-o como um nome de pacote com um "argumento" extra para ajudá-lo a instalar os arquivos corretos. Como o argumento django
é interpretado depende inteiramente do setup.py
arquivo (ou algum outro arquivo de configuração? Na verdade, não sei os detalhes) usado para definir o pacote splinter
.
pip install splinter
instalará menos requisitos do que pip install splinter[django]
. Os pacotes adicionais que são instalados podem de fato (e provavelmente fazem) permitir que recursos adicionais do splinter funcionem, mas isso não muda nada no próprio pacote do splinter. Apenas informa ao pip sobre dependências adicionais.
[optional]
no PIP significam dependências opcionaisCaso apareça outro desenvolvedor procurando implementar esse padrão em sua própria implantação de pacote Python, aqui está uma explicação adicional do brackets []
in pip.
Para instalar a airflow
partir do pip , usamos este comando:
pip install 'apache-airflow'
Você pode instalar componentes opcionais de fluxo de ar com:
pip install 'apache-airflow[aws]'
# [optional] -----------^
Quando procurar pypi de apache-airflow
nota que os pacotes opcionais não aparecem:
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
Você pode ver como isso foi feito no setup.py
script
À esquerda em setup.py
- extras_require
está definido.
À direita estão os comandos de instalação correlacionados para esses subpacotes opcionais.
Tenho certeza de que são ferramentas de configuração extras:
Às vezes, um projeto tem dependências “recomendadas”, que não são necessárias para todos os usos do projeto. Por exemplo, um projeto pode oferecer saída PDF opcional se ReportLab estiver instalado, e suporte a reStructuredText se docutils estiver instalado. Esses recursos opcionais são chamados de “extras” ...
Talvez valha a pena saber que esta sintaxe de pacote opcional admite vários extras (separados por vírgula entre colchetes) como em:
python -m pip install SomePackage[PDF,EPUB] # multiple extras
De acordo com o manual do pip