Ich sehe immer mehr Befehle wie diesen:
$ pip install "splinter[django]"
Was machen diese eckigen Klammern?
Ich sehe immer mehr Befehle wie diesen:
$ pip install "splinter[django]"
Was machen diese eckigen Klammern?
pip install "splinter[django]", um eine versehentliche Ausdehnung des Musters zu vermeiden.
Antworten:
Die von Ihnen verwendete Syntax lautet:
pip install "project[extra]"
In Ihrem Fall sind Sie installingdas splinterPaket, für das zusätzliche Unterstützung bereitgestellt wird django. Die eckigen Klammern ( []) sind keine spezifische Syntax, sondern nur Konventionen. Wirklich, Sie installieren das Paket mit dem Namen : "splinter[django]".
Eine Erklärung von @chetner:
Der Befehl
pip install splinter djangowürde zwei Pakete mit dem Namensplinterund installierendjango.splinter[django]Installiert andererseits eine Variante dessplinterPakets, die Unterstützung für enthältdjango. Beachten Sie, dass es nichts mit demdjangoPaket selbst zu tun hat, sondern nur eine vomsplinterPaket definierte Zeichenfolge für einen bestimmten Funktionssatz, der aktiviert wird.
extra?
splinterund installieren django. splinter[django]Installiert andererseits eine Variante des splinterPakets, die Unterstützung für enthält django. Beachten Sie, dass es nichts mit dem djangoPaket selbst zu tun hat, sondern nur eine vom splinterPaket definierte Zeichenfolge für einen bestimmten Funktionssatz, der aktiviert wird.
splinterist immer noch der Paketname; pipselbst analysiert splinter[django]und erkennt es als Paketnamen mit einem zusätzlichen "Argument", um die Installation der richtigen Dateien zu erleichtern. Wie das Argument djangointerpretiert wird, hängt ganz von der setup.pyDatei (oder einer anderen Konfigurationsdatei? Ich kenne die Details nicht wirklich) ab, die zum Definieren des Pakets verwendet wird splinter.
pip install splinterwerden weniger Anforderungen installiert als pip install splinter[django]. Die zusätzlichen Pakete, die installiert werden, können zwar (und wahrscheinlich auch) zusätzliche Funktionen des Splitters ermöglichen, ändern jedoch nichts am Splitterpaket selbst. Es informiert pip nur über zusätzliche Abhängigkeiten.
[optional]in PIP kennzeichnen optionale AbhängigkeitenFür den Fall, dass ein anderer Entwickler dieses Muster in seiner eigenen Python-Paketbereitstellung implementieren möchte, finden Sie hier eine weitere Erläuterung des brackets []In-Pip.
Um airflowvon pip zu installieren, verwenden wir diesen Befehl:
pip install 'apache-airflow'
Sie können optionale Komponenten des Luftstroms installieren mit:
pip install 'apache-airflow[aws]'
# [optional] -----------^
Wenn wir pypi nach Hinweis durchsuchen , dass die optionalen Pakete nicht angezeigtapache-airflow werden:
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.pyWie dies erreicht wurde, sehen Sie im setup.py Skript.
Links in setup.py- extras_requireist definiert.
Rechts sind die entsprechenden Installationsbefehle für diese optionalen Unterpakete aufgeführt.
Ziemlich sicher, dass dies Setuptools-Extras sind:
Manchmal hat ein Projekt „empfohlene“ Abhängigkeiten, die nicht für alle Verwendungen des Projekts erforderlich sind. Beispielsweise kann ein Projekt eine optionale PDF-Ausgabe bieten, wenn ReportLab installiert ist, und die Unterstützung von reStructuredText, wenn docutils installiert ist. Diese optionalen Funktionen werden als "Extras" bezeichnet ...
Dies ist genau die Liste aus der setup.pyDatei für das betreffende Projekt :
"django": ["Django>=1.7.11;python_version<'3.0'", "Django>=2.0.6;python_version>'3.3'", "lxml>=2.3.6", "cssselect", "six"],