2015-02-17 10 views
8

Ich benutze export PIP_REQUIRE_VIRTUALENV=true; in meinem .bashrc, um sicherzustellen, dass ich nicht versehentlich mein globales env verunreinige, während ich Pakete für die verschiedenen Projekte installiere, an denen ich arbeite.Warum sind nützliche Befehlszeilenoptionen in pip nicht dokumentiert und explizit versteckt?

Ich erinnerte mich vage daran, dass dies das gleiche war wie das Hinzufügen einer --require-virtualenv in die Befehlszeile beim Aufruf pip.

Allerdings war ich nicht in der Lage jede Dokumentation für diesen überall außer in the source code of pip zu finden, wo die Hilfe für die Funktion explizit unterdrückt wird (mit SUPRESS_HELP)! Es gibt 11 solche Optionen, für die die Hilfe auch explizit deaktiviert wurde (z. B. --no-input).

Ich schaue durch die Geschichte der Datei, fand aber keine Erwähnung von , warum das Feature in den Commit-Nachrichten versteckt war.

Ist dies ein experimentelles Merkmal, auf das man sich nicht verlassen sollte? Sollte ich diese Funktionen nicht nutzen (oder andere ermutigen) oder gibt es eine andere Möglichkeit, diese Funktionen zu nutzen? Könnte jemand bitte etwas Licht auf dieses Rätsel werfen?


Update: stellte ich diese Frage als an issue on pip's Github page.

+1

Soweit ich sehen kann, dass Option * immer * versteckt, rechts von __ in '__init sein py' durch' baseparser.py' zu 'cmdoptions.py' - vgl. Z https://github.com/pypa/pip/blob/ef63f2f48f55ab2e110e07cd069e6c0e6c287a2a/pip/__init__.py#L305 – jonrsharpe

+0

@jonrsharpe Curioser und Kuriositäten. Danke, dass du das herausgefunden hast. –

Antwort

1

Haftungsausschluss: Ich bin kein beitragender Autor auf pip und das sind Spekulationen und nicht Erkenntnisse von den Autoren oder Betreuer von pip.

eine oder mehrere der folgenden Punkte können den Autor geführt haben, die Optionen versteckt zu machen:

  1. Einige Optionen sind wirklich noops und existieren auf Vollständigkeit und Kompatibilität, aber normalerweise nicht von jemandem zu lesen verwendet werden würde, Hilfe. Zum Beispiel --use-wheel, die standardmäßig aktiviert ist.

  2. Einige Optionen sind vorübergehend oder veraltet und sollten nicht verwendet werden, da sie möglicherweise in einer zukünftigen Version entfernt werden. Zum Beispiel --use-mirrors, die mit dem Kommentar markiert ist TODO: Entfernen Sie nach 6.0.

  3. Einige Optionen können experimentell sein oder funktionieren möglicherweise nicht in allen Umgebungen. Dies könnte ein Problem für Endbenutzer sein, die erwarten, dass die Software plattformübergreifend ist und die Autoren nicht die Mühe machen, die Umgebung zu testen und bedingte Anweisungen zu geben - vielleicht eine unnötige Komplexität für selten verwendete spezialisierte Optionen. Vielleicht ist --default-vcs ein Beispiel dafür.

  4. Eine weitere Möglichkeit ist, dass das Verhalten einer selten verwendeten Option nicht standardisiert oder schwer zu beschreiben ist, da sie von externen Variablen oder der Umgebung abhängt. In diesem Fall kann es leichter sein, Hilfe zu unterdrücken als verwirrend zu sein ein.

  5. Als ich war Betreuer grep, hatten wir zunächst viele undokumentierte Optionen. Dies waren Optionen, deren Verhalten nicht dem Standard entsprach (z. B. nicht mit POSIX übereinstimmte), aber wo sie aus historischen Gründen und deren Entfernung kritische Systemskripte auf der ganzen Welt, die sie möglicherweise verwendet haben, verletzt haben könnten.Ich würde nicht wissen, ob solche Optionen in pip vorhanden sind, aber wollte dies aus Gründen der Vollständigkeit als Grund dafür, warum einige Optionen möglicherweise versteckt sind, erwähnen.

+2

6. Einige Optionen können für den internen Gebrauch bereitgestellt werden (z. B. Komponententestskripte) und haben eine eingeschränkte Funktionalität und/oder Nützlichkeit außerhalb dieses spezifischen Szenarios. – tripleee

Verwandte Themen