pip install --user bedeutet, dass Benutzer Anwendungen nicht von Dash oder Terminal aus ausführen können

pip install --user bedeutet, dass Benutzer Anwendungen nicht von Dash oder Terminal aus ausführen können

Ich bin Entwickler einer Python-GUI-Anwendung. Ich möchte, dass Benutzer meiner Anwendung die Anwendung mithilfe von pip installieren können, da noch nicht alle Abhängigkeiten in Debian enthalten sind und ich nicht damit rechne, dass sich diese Situation in naher Zukunft ändern wird.

Ein PPA wäre natürlich eine gute Idee, aber in meinem Fall würde das bedeuten, dass ich von Grund auf Debian-Pakete für Python-Pakete erstellen müsste, die nicht meine eigenen sind und Dinge beinhalten, in denen ich sicherlich keine Erfahrung habe, z. B. SWIG.

Die nächstbeste Alternative zu einem PPA ist Pythons Pip. Und es funktioniert großartig! Alle guten Ratschläge raten dazu, die --userOption beim Ausführen zu verwenden pip install. Die Pip-Entwickler sagen das und ich habe den Eindruck, dass Ubuntu dies tatsächlich standardmäßig verwendet.

Unter Ubuntu treten bei der Verwendung jedoch zwei Probleme --userauf pip:

  1. Die ausführbare Datei der Anwendung wird in installiert ~/.local/bin, was sich im Gegensatz zu Fedora und möglicherweise einigen anderen Distributionen nicht im Standardpfad von Ubuntu befindet. (setup.py verwendet setuptools‘ entry_points).
  2. Aus unerklärlichen Gründen wird die Anwendung nicht im Dash angezeigt, auch nicht nach dem Abmelden, obwohl .desktopsich die Datei in befindet ~/.local/share/applications. Leider werden auch die installierten Manpages ~/.local/share/man/man1nicht angezeigt, wenn der Benutzer man vom Terminal aus ausführt.

Ich kann Ubuntu-Benutzer bitten, ein Verzeichnis zu erstellen ~/binund darin einen symbolischen Link zu meiner Anwendung hinzuzufügen ~/.local/bin, aber das löst weder das Problem der Manpage noch das Fehlen einer Möglichkeit, die Anwendung vom Dash aus zu starten.

Wie rate ich meinen Benutzern, diese Probleme am besten zu lösen?

Der genaue Befehl, den ich den Benutzern zur Installation empfehle, lautetpython3 -m pip install --user foo-1.0.tar.gz

Antwort1

Nach Gesprächen mit den Ubuntu-Entwicklern im IRC ist mir jetzt klar, dass Ubuntu Debian folgt und ~/bin zum PATH hinzufügt, wenn der Ordner existiert. Es gibt keine Pläne, dasselbe für ~/.local/bin zu tun. Der Endbenutzer muss also seinen Pfad manuell anpassen oder einen symbolischen Link hinzufügen usw. Als Anwendungsentwickler brauche ich vermutlich ein spezielles Installationsskript für Ubuntu- und Debian-Benutzer, das einige dieser Dinge erledigt, was wirklich schade ist, da dies sicher auch jeden anderen Python-Anwendungsentwickler betrifft, der auf pip angewiesen ist.

verwandte Informationen