I see more and more commands like this:
$ pip install "splinter[django]"
What do these square brackets do?
The syntax that you are using is:
pip install "project[extra]"
In your case, you are
splinter package which has the added support for
django. The square brackets (
) are not specific syntax, just convention. Really, you are installing the package named:
An explanation from
pip install splinter djangowould install two packages named
splinter[django], on the other hand, installs a variant of the
splinterpackage which contains support for
django. Note that it has nothing to do with the
djangopackage itself, but is just a string defined by the
splinterpackage for a particular feature set that gets enabled.
[optional]in PIP signify optional dependencies
Just in case another developer comes along looking to implement this pattern in their own Python package deployment, here's further explanation of the
brackets  in pip.
airflow from pip we use this command:
pip install 'apache-airflow'
You can install optional components of airflow with:
pip install 'apache-airflow[aws]' # [optional] -----------^
When we search pypi for
apache-airflow note that the optional packages do not show up:
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 ...
You can see how this was accomplished in the
On the left in
extras_require is defined.
On the right are the correlated installation commands for these optional sub-packages.
Pretty sure these are setuptools extras:
Sometimes a project has “recommended” dependencies, that are not required for all uses of the project. For example, a project might offer optional PDF output if ReportLab is installed, and reStructuredText support if docutils is installed. These optional features are called “extras” ...