wake-up-neo.com

Wie installiere ich python3.7 und erstelle eine virtuelle Umgebung mit pip unter Ubuntu 18.04?

Ich versuche, mit python 3.7 unter Ubuntu 18.04 ein Standard-Virtualenv einzurichten, mit pip (oder auf irgendeine Weise, Pakete im Virtualenv zu installieren). Die Standardmethode zur Installation von python3.7 scheint zu sein: % Sudo apt install python3.7 python3.7-venv % python3.7 -m venv py37-venv, Aber der zweite Befehl schlägt fehl und lautet:

Die virtuelle Umgebung wurde nicht erfolgreich erstellt, da surepip nicht verfügbar ist. Auf Debian/Ubuntu-Systemen müssen Sie das Paket python3-venv mit dem folgenden Befehl installieren.

apt-get install python3-venv

Möglicherweise müssen Sie Sudo für diesen Befehl verwenden. Erstellen Sie nach der Installation des Pakets python3-venv Ihre virtuelle Umgebung neu.

Fehlgeschlagener Befehl: ['/py37-venv/bin/python3.7', '-Im', 'surepip', '--upgrade', '--default-pip']

Das ist wahr; Bei diesem Python ist weder surepip noch pip installiert. Und ich habe python3.7-venv Bereits installiert (python3-venv Ist für python3.6 unter Debian/Ubuntu). Ich habe festgestellt, dass in der Community python einige Diskussionen darüber stattgefunden haben, weil mehrere python Versionen und/oder Root-Zugriff erforderlich sind und alternative Möglichkeiten zur Installation von python Modulen über apt o.ä.

Das Erstellen einer virtuellen Umgebung ohne Pip (--without-pip) Ist erfolgreich, aber dann gibt es keine Möglichkeit, Pakete in der neuen virtuellen Umgebung zu installieren, was den Zweck weitgehend zunichte zu machen scheint.

Also, was ist die akzeptierte "Best Practice" -Methode, um python3.7 am 18.04 mit einem virtuellen Env zu installieren und zu verwenden?

8
GaryO

Ich weiß nicht, ob es sich um Best Practices handelt oder nicht, aber wenn ich auch python3-venv installiere, funktioniert alles (dies wird auf einem neuen Debian-Buster-Docker-Image getestet):

% Sudo apt install python3.7 python3-venv python3.7-venv
% python3.7 -m venv py37-venv
% . py37-venv/bin/activate
(py37-venv) % 

Beachten Sie, dass es auch unnötigerweise Python3.6 installiert, so dass ich nicht genau sagen kann, dass es mir gefällt, aber zumindest funktioniert es und erfordert nicht, dass ein nicht signiertes Skript wie folgt ausgeführt wird get-pip.py tut.

19
GaryO