web-dev-qa-db-fra.com

Comment installer python3.7 et créer un virtualenv avec pip sur Ubuntu 18.04?

J'essaie de configurer une virtualenv standard avec python 3.7 sous Ubuntu 18.04, avec pip (ou un moyen d'installer des paquetages dans virtualenv). La méthode standard pour installer python3.7 semble être: % Sudo apt install python3.7 python3.7-venv % python3.7 -m venv py37-venv, Mais la deuxième commande échoue en indiquant:

L'environnement virtuel n'a pas été créé avec succès car le bulletin de sécurité n'est pas disponible. Sur les systèmes Debian/Ubuntu, vous devez installer le paquet python3-venv à l’aide de la commande suivante.

apt-get install python3-venv

Vous devrez peut-être utiliser Sudo avec cette commande. Après avoir installé le paquet python3-venv, recréez votre environnement virtuel.

Commande d'échec: ['/py37-venv/bin/python3.7', '-Im', 'Ensurepip', '--upgrade', '--default-pip' ']

C'est vrai; il n’existe ni Ensurepip ni Pip installé avec ce python. Et j'ai déjà installé python3.7-venv (python3-venv Est pour python3.6 sur Debian/Ubuntu). Je suppose que la communauté python en a déjà discuté à cause de plusieurs versions de python et/ou nécessitant un accès root, ainsi que d'autres méthodes pour installer les modules python via apt ou similaire.

La création d'un virtualenv sans pip (--without-pip) Réussit, mais il n'y a aucun moyen d'installer des packages dans le nouveau virtualenv, ce qui semble largement contrecarrer le but recherché.

Alors, quelle est la "pratique recommandée" pour installer et utiliser python3.7 sur 18.04 avec virtualenv?

8
GaryO

Je ne sais pas si ce sont les meilleures pratiques ou non, mais si j'installe aussi python3-venv, alors tout fonctionnera (ceci est testé sur une image stock de Debian Buster docker):

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

Notez qu’il installe également inutilement l’ensemble de python3.6, je ne peux donc pas dire que j’aime bien, mais au moins, cela fonctionne et ne nécessite pas l’exécution d’un script non signé de la manière get-pip.py Est-ce que.

19
GaryO