2 votes

Installation de Python 3.5 pyvenv

J'essaie d'obtenir un environnement virtuel pour une version qui nécessite python 3.5. J'utilise Debian, et d'après ce que je sais, python 3.5 n'a pas de paquet aptitude. Après avoir lu quelques posts, il a été recommandé de télécharger le code source de 3.5 et de le compiler.

Après avoir exécuté les commandes make et install, python3.5 a été installé dans /usr/local/bin. Je l'ai ajouté à la variable $PATH.

C'est ici que j'ai rencontré des problèmes. Après avoir exécuté :

$ cd project-dir
$ pyvenv env
$ source env/bin/activate
$ pip install -r requirements.txt

J'avais des problèmes avec le fait d'avoir besoin de sudo pour installer les bons paquets. J'ai exécuté :

$ which pip

et il s'avère que pip utilisait toujours la version /usr/local/bin de pip.

$ echo $PATH

retourné

/home/me/project-dir/env/bin:/usr/local/bin:/usr/bin:/bin: ...

Je suppose que parce que le chemin /usr/local est venu après le chemin de l'environnement virtuel dans ma variable PATH, il utilise cette version de pip au lieu de mes environnements virtuels.

Les deux options qui me viennent à l'esprit sont de déplacer les binaires dans /usr/bin ou de modifier l'activation script dans mon environnement virtuel pour placer le chemin de l'environnement virtuel après /usr/local.

2voto

Keshan Nageswaran Points 4909

Option 1 Vous pouvez mettre à niveau manuellement le pipeline dans un environnement virtuel en exécutant

pip install -U pip

Option 2 Bonne méthode pour mettre à jour pip à l'intérieur de ce paquet python -m ensurepip --upgrade met effectivement à jour la version de pip dans le système (si elle est inférieure à la version dans ensurepip).

Vous êtes confronté à ce problème, car venv utilise assurerpip pour ajouter des tuyaux dans de nouveaux environnements :

À moins que l'option --without-pip ne soit donnée, ensurepip sera invoqué pour démarrer pip dans l'environnement virtuel.

Le paquet Ensurepip ne sera pas téléchargé à partir d'Internet ou ne récupérera pas de fichiers d'ailleurs, car tous les composants nécessaires sont déjà inclus dans le paquet. Le faire ajouterait des failles de sécurité et n'est donc pas supporté.

Ensurepip n'est pas conçu pour vous donner le pip le plus récent, mais juste "un" pip. Pour obtenir le pip le plus récent, utilisez la méthode manuelle décrite au début de ce billet.

Pour vérifier la version d'ensurepip, vous pouvez taper dans la console python import ensurepip print(ensurepip.version())

Plus de résultats pour une lecture plus approfondie :

  1. Pour mettre à jour ensurepip manuellement à l'aide des fichiers - https://github.com/python/cpython/commit/f649e9c44631c07e707842c42747b651b986dcc4
  2. Quelle est la bonne façon d'installer pip, virtualenv et distribute pour Python ?
  3. Tutoriel complet pour débutants sur virtualenv ?

2voto

knelson Points 96

La réponse de Kesh m'a orienté dans la bonne direction.

Le problème est que je n'ai pas installé pip sur mon serveur.

Il s'avère que lorsque j'ai construit python3.5 à partir des sources, je n'avais pas le paquet libssl-dev. Il semble que l'une des dépendances d'ensurepip était le paquetage ssl de python qui n'a pas été installé parce que je n'avais pas libssl-dev.

Pour résoudre le problème, j'ai reconstruit python 3.5 pour les sources avec le paquet libssl-dev installé. La reconstruction de Python incluait maintenant le paquetage ssl, ce qui a permis à ensurepip d'installer pip dans mon environnement virtuel.

1voto

Engineero Points 938

Essayez de l'installer localement :

pip install --user -r requirements.txt

ce qui, je crois, installerait le fichier dans un sous-répertoire de votre $HOME (que votre environnement virtuel devrait définir). Sinon, je pense que vous pouvez simplement utiliser :

/path/to/virtualenv/pip install -r requirements.txt

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X