Vejo mais e mais comandos como este:
$ pip install "splinter[django]"
O que esses colchetes fazem?
python
pip
dependency-management
Babken Vardanyan
fonte
fonte
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
osplinter
pacote que tem suporte adicional paradjango
. 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
:fonte
extra
significa?splinter
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.splinter
ainda é o nome do pacote;pip
o próprio analisasplinter[django]
e reconhece-o como um nome de pacote com um "argumento" extra para ajudá-lo a instalar os arquivos corretos. Como o argumentodjango
é interpretado depende inteiramente dosetup.py
arquivo (ou algum outro arquivo de configuração? Na verdade, não sei os detalhes) usado para definir o pacotesplinter
.pip install splinter
instalará menos requisitos do quepip 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.Os colchetes
[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.Por exemplo: Apache Airflow
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 ...
Implementação via
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.
fonte
Tenho certeza de que são ferramentas de configuração extras:
https://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-their-own-dependencies
fonte
Esta é exatamente a lista do
setup.py
arquivo para o projeto em questão :"django": ["Django>=1.7.11;python_version<'3.0'", "Django>=2.0.6;python_version>'3.3'", "lxml>=2.3.6", "cssselect", "six"],
fonte
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
fonte