PIP ne s'installe pas dans le répertoire virtualenv

10

J'essaie d'installer django sur un virtualenv qui existe déjà.

En suivant les instructions répertoriées sur le site Web de pip-install ici , j'ai exécuté ce qui suit à partir de SSH.

name@server:~$ . myenv.env/bin/activate
(myenv.env)nam@server:~$ pip install django

Cependant au bas de l'installation, je vois ceci:

creating /usr/local/lib/python2.7/dist-packages/django

error: could not create '/usr/local/lib/python2.7/dist-packages/django': Permission denied

Il semble qu'il essaie de l'installer dans le répertoire global. Je n'ai pas de privilèges sudo. Est-ce que je fais quelque chose de mal ici?

Mise à jour: $ PATH = /var/django/myenv.env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Luke Sapan
la source
Cela fonctionne-t-il correctement pour d'autres packages? Avez-vous le même problème si vous utilisez easy_install?
larsks
Même problème avec les autres packages. Et je crois que easy_install nécessite sudo et serait installé dans le répertoire global.
Luke Sapan
Non, la configuration d'un virtualenv vous permet d'installer easy_install ainsi que pip. Vous pouvez taper which easy_installpour voir si vous utilisez votre virtualenv ou le système.
larsks
En fait, êtes-vous sûr que vous exécutez pip depuis l'intérieur du virtualenv? Qu'est-ce que which pipcède? Et voyez-vous à l' pipintérieur myenv.env/bin/?
larsks
Je vois pip à l'intérieur de myenv.env / bin /. J'ai juste essayé "d'activer" à nouveau mon env, et malgré le fait d'être dans ce mode, "quel pip" et "quel easy_install" renvoient respectivement "usr / local / bin / pip" et "usr / bin / easy_install".
Luke Sapan

Réponses:

6

Désolé pour une réponse d'un an en retard! J'ai eu le même problème et l'ai résolu, je ne sais pas si vous avez changé le nom d'un répertoire après avoir créé l'environnement virtuel, je l'ai fait. Si c'est le cas, voici ce que j'ai fait.

1.) deactivatevotre v-env. Après le correctif, vous devez redémarrer le v-env, tout comme deactivatemaintenant. droite?

2.) Maintenant, puisque nous avons créé le v-env dans un chemin différent, nous devons changer les variables de chemin statique dans ces fichiers.

Pour faire fonctionner le pip, vous n'avez pas besoin de le faire, mais je le fais toujours. bin/activate, bin/activate.csh, bin/activate.fish

bin/pip, bin/pip2, bin/pip2.7

bin/easy_install, bin/easy_install2.7

3.) Pour que pip fonctionne, vous devez corriger l'interpréteur python dans le fichier pip, qui a également un emplacement d'interpréteur statique défini par virtualenv dans le processus de création.

4.) Pour faire fonctionner easy_install? Vous l'avez deviné, corrigez l'emplacement de l'interprète.

J'espère que cela a aidé à toute personne lisant ceci à l'avenir. Désolé OP, d'être en retard.

Croustillant
la source
Ouais c'était exactement ça. Dans mon cas, j'ai pu recréer le virtualenv à partir de zéro et cela l'a résolu.
Luke Sapan
Heureux de vous aider
Crispy
Je suis tellement content de trouver enfin une réponse. Pour moi, l'utilisation de sed dans le dossier venv a rendu le travail beaucoup plus facile. Quelque chose comme grep -rli '/path/to/old/env/bin' * | xargs -i@ sed -i 's/\/path\/to\/old\/env\/bin/\/path\/to\/new\/env\/bin/g' @. source
Keith
Vous dites: "Pour que pip fonctionne, vous devez corriger l'interpréteur python dans le fichier pip", où et comment cela se fait-il?
Dave
3

J'ai eu le même problème.

J'ai supprimé l'environnement virtuel et en ai créé un nouveau, ce qui a résolu le problème.

Probablement pas la réponse que vous espériez, mais puisque c'est la seule ...

marque
la source
1

Eh bien, sans privilèges administratifs, vous êtes très limité sur ce que vous êtes capable de faire. Si vous n'êtes pas autorisé à vous élever ou à demander des privilèges, la meilleure façon d'y parvenir serait de créer un autre environnement, de créer un fichier requirements.txt, de télécharger tous les packages dont vous avez besoin sur votre machine (django). être également situé dans votre fichier d'exigences et cela devrait fonctionner.

secure212
la source
0

Eu le même problème. Dans mon cas, la raison était que l'environnement virtuel créé était pour python2.7 (par défaut) mais j'utilisais pip3 pour installer un paquet. pip3 n'était pas présent dans mon virtualenv, il est donc par défaut le global. Pour moi, la solution consistait à utiliser

virtualenv flask --python=python3

pour créer l'env.

Adversus
la source
0

J'avais rencontré le même problème causé par le changement de nom de l'utilisateur. La réponse de Crispy est tout à fait juste. Et ma solution peut être plus pratique.

setps:
1. Entrez le chemin du bac de votre environnement virtuel, tel que cd ~/virenv_dir/bin
2. Renommez tous les fichiers de ce répertoire à l'aide de la commande sed.sed -i 's/old_name/new_name/' *

xialu
la source
0

Dans mon cas, j'avais défini deux alias (pour surmonter un autre problème sur la version python par défaut):

alias pip='/usr/bin/pip3'
alias python='/usr/bin/python3'

Et cela causait les mêmes symptômes:

[Errno 13] Permission denied: '/usr/lib/python3.6/site-packages'

La suppression des alias a résolu le problème (avant ou après la création de virtualenv)

coderazzi
la source
0

L'appel sudo pipappellera global pip et non pip dans votre virtualenv. Activez / travaillez sur votre environnement puis appelez simplement pip, non sudo pip, cela peut résoudre votre problème, comme le mien.

Milton Walker
la source