1 votes

Installation de paquets pip et virtualenv

Bonjour !

Résumé : j'ai un problème avec pip et virtualenv. Que mon virtualenv soit activé ou non, pip installe les paquets dans le site-packages du venv, mais en dehors de mon venv, Python lit les paquets depuis un dossier totalement différent (détails ci-dessous), ce qui fait que je ne peux pas installer de paquets pour mon Python en dehors du venv. Je pense que je dois m'assurer que pip installe à des endroits différents lorsqu'il est à l'intérieur ou à l'extérieur de venv. Je n'arrive pas à trouver un fichier de configuration pour mon pip où cela est indiqué et la plupart des pages wabpages que j'ai regardées ne sont pas vraiment pertinentes pour mon problème ou sont bien au-dessus de mes compétences...

Quelques détails (je suis encore novice dans l'utilisation d'ubuntu, de linux, et des données de Python, donc si j'oublie une information importante, merci de me le dire et j'essaierai de compléter ce qui manque) : Hors venv :

$which python

se traduit par

usr/bin/python

y

$which pip

donne

/home/username/.local/bin/pip

J'ai découvert que le paquetage du site Python peut identifier où il cherche des paquets, voici donc le résultat de son utilisation (j'inclus également ce qui m'a notifié le problème) :

$ python
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
>>> import site
>>> print(site.getsitepackages())
['/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.6/dist-packages']
>>> import numpy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'numpy'
>>> exit()
$ pip install numpy
Requirement already satisfied: numpy in ./projectFolder/venv/lib/python3.6/site-packages (1.17.4)

En regardant les répertoires, je ne trouve pas de répertoire site-package pour Python mais je peux trouver un dist-packages (comme ci-dessus) tandis que dans venv il y a un site-packages où pip installe les paquets.

L'activation de ma veine donne les résultats suivants :

(venv)$ which python
/home/username/projectFolder/venv/bin/python
(venv)$ which pip
/home/username/projectFolder/venv/bin/pip

L'utilisation du site sous venv donne :

(venv)$ python
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
>>> import site
>>> print(site.getsitepackages())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'site' has no attribute 'getsitepackages'

0voto

ABIN BABU Points 1

Le problème est bien décrit ici par le responsable de virtualenv : https://github.com/pypa/virtualenv/issues/737#issuecomment-319078189

Je cite ici son commentaire :

Le problème (tel que je le comprends) est que virtualenv implémente sa propre version de site. version de site.py qui ne suit pas parfaitement la version de base de Python parfaitement (c'est le problème derrière #355, référencé ci-dessus - si vous si vous suivez ce lien, et le lien vers les différents problèmes liés à vous comprendrez le contexte).

La résolution de ce problème n'est pas aussi simple que "synchroniser avec le site principal site.py", parce que nous avons besoin de supporter plusieurs versions de Python, et site.py a changé entre elles.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X