web-dev-qa-db-fra.com

Impossible d'installer via pip avec Virtualenv

Ci-dessous est l'erreur que je reçois lorsque j'exécute pip

serkan$ rm -r mysite
serkan$ pwd
/Users/serkan/Desktop/Python Folder
serkan$ virtualenv mysite 
New python executable in mysite/bin/python
Installing setuptools............done.
Installing pip...............done.
serkan$ source mysite/bin/activate
(mysite)serkan$ pip install pinax
-bash: /Users/serkan/Desktop/Python Folder/mysite/bin/pip: "/Users/serkan/Desktop/Python: bad interpreter: No such file or directory
(mysite)serkan$ python pip install pinax
python: can't open file 'pip': [Errno 2] No such file or directory
(mysite)serkan$ python pip install Pinax
python: can't open file 'pip': [Errno 2] No such file or directory
(mysite)serkan$ python pip install Pinax
python: can't open file 'pip': [Errno 2] No such file or directory
(mysite)serkan$ python pip install Pinax
python: can't open file 'pip': [Errno 2] No such file or directory
(mysite)serkan$ python pip 
python: can't open file 'pip': [Errno 2] No such file or directory
(mysite)serkan$ pip
-bash: /Users/serkan/Desktop/Python Folder/mysite/bin/pip: "/Users/serkan/Desktop/Python: bad interpreter: No such file or directory
(mysite)serkan$ pip install Pinax
-bash: /Users/serkan/Desktop/Python Folder/mysite/bin/pip: "/Users/serkan/Desktop/Python: bad interpreter: No such file or directory
(mysite)serkan$ 
59
shaytac

Créez votre environnement virtualenv dans un chemin sans espaces. C'est pourquoi cela se passe:

Lorsque vous créez un environnement, il crée un répertoire bin. Dans ce répertoire bin se trouvent tous les exécutables relatifs à l’environnement. Certains sont des scripts. Comme vous le savez peut-être, les hashbangs sont utilisés pour indiquer au système l'interpréteur à utiliser pour exécuter le script. Vous pouvez voir cela souvent au sommet des scripts:

#!/usr/bin/env python

Si le script est à /tmp/test.py, le système doit exécuter cette commande pour exécuter le script:

/usr/bin/env python /tmp/test.py

Dans votre cas, virtualenv crée des scripts comme celui-ci:

#!/tmp/oh no/bin/python

Lorsque le système essaiera de l'exécuter, il tentera d'exécuter la commande /tmp/oh avec les arguments no/bin/python et /tmp/test.py. /tmp/oh n'existe pas, donc il échoue.

121
icktoofay

Pour ceux qui rencontrent ce problème, j'ai découvert que la longueur du chemin pouvait aussi causer des problèmes, sans utiliser d'espaces (Ubuntu 12.04):

virtualenv /home/user/some/very/longer/path/without/spaces/etc/venv

a échoué, alors que

virtualenv /home/user/some/very/long/path/without/spaces/etc/venv

a bien fonctionné, voir le commentaire d'Alex ci-dessous

22

La commande pip ne fonctionnera pas si:

  • Vous n'avez pas installé pip dans votre système. (vous devez d'abord installer pip sur votre système avant de pouvoir l'utiliser dans virtualenv. Pour installer pip sur Ubuntu, utilisez la commande Sudo apt-get install python-pip ou Sudo apt-get install python3-pip)
  • Le chemin d'accès au dossier de votre environnement virtuel contient des espaces .(Exemple:/home/nom d'utilisateur/nom de mon dossier avec espaces/newvirtualenv)
  • Le chemin d'accès au dossier de votre environnement virtuel est trop long. Exemple:/home/nom_utilisateur/mytoobigpath/un dossier/autre dossier/un autre dossier/un autre dossier encore/monvirtualenv. (Essayez de renommer des dossiers parents avec des noms plus petits)

Si vous ne pouvez pas renommer les dossiers ni changer de chemin pour une raison quelconque, passez à yourvirtualenvfolder/bin (à l'aide de la commande cd), puis essayez python pip install packagename.

15
Mohammed Shareef C

icktoofay a raison sur la cause.

Pour utiliser pip avec virtualenv dans un répertoire contenant des espaces, éditez /path/to/env/bin/pip, en remplaçant le Shebang en haut par #!/usr/bin/env python (ou #!/usr/bin/env pypy si vous utilisez pypy).

Notez que virtualenv modifie votre environnement de sorte que /usr/bin/env python se réfère à la python définie par virtualenv.

14
Bryan Head

J'ai la même erreur dans RedHat. Python 2.7.3 est configuré et créé par mes propres moyens . [Installateur @ Ifx] # pip install Django - bash:/usr/local/bin/pip: /usr/local/bin/python2.7: mauvais interprète: permission refusée

Solution: Dans/usr/local/bin/pip, remplacez la première ligne #!/Usr/local/bin/python2.7 par votre chemin Python actuel #!/Root/installer/Python-2.7.5/python

1
JackChen255

J'ai eu un problème très similaire sur mon Windows 7 machine et a lutté quelques jours avec cela. Les deux chemins, vers ma distribution python et vers mon VE contenaient des espaces . Quelques mois avant que cela fonctionne bien. J'ai trouvé la note suivante sur le site virtualenv:

**Windows Notes**
[...] To create a virtualenv under a path with spaces in it on Windows, you’ll need the win32api library installed.

Les étapes suivantes me mènent au succès:

  1. Assurez-vous que j'ai utilisé pip pour installer virtualenv et que c'est la dernière version (pip-7.1.0). Résultat: échec .
  2. Installez win32api. Résultat: échec (bien qu'il y ait eu une erreur à la toute fin du processus d'installation).
  3. Essayez d'installer mon VE dans un chemin sans espaces. Résultat: échec .
  4. Réinstallez ma distribution Anaconda python sur le chemin ne contenant pas les crochets "[" et "]". VE avait des espaces dans le chemin. Résultat: échec .
  5. Réinstallez ma distribution Anaconda python sur le chemin qui ne contenait pas non plus d'espaces. Le dossier VE avait toujours des espaces dans le chemin. Résultat: succès!

Donc au moins, l'installation Anaconda (python) simple, le chemin non pollué par l'espace était crucial . Peut-être que l'installation de win32api était également importante. Pas certain.

0
ellockie

Dans mon cas, désactivez l'environnement et source bin/activate fonctionne à nouveau. 

Il semble que le contenu de mon dossier porte les mêmes noms de sous-dossiers que ceux générés par virtualenv, tels que bin, lib, etc. Après la copie dans mes fichiers, réactivez l'environnement et laissez virtualenv de mettre à jour les nouvelles informations.

0
Yushan Zhang

Sur Python 3.7, je n’avais aucun problème avec cela, mais quand j’ai dû utiliser Python 3.6, j’ai eu un problème. La solution la plus simple que j'ai trouvée sur Github était la suivante:

Au lieu de:

pip install -r requirements.txt

J'utilise:

python env/bin/pip install -r requirements.txt

Vous pointez donc directement vers le fichier pip dans votre répertoire d’environnement virtuel. Bien sûr, vous devez l'activer avant d'essayer cela. J'espère que cela aide quelqu'un qui vient ici!

0
Bob de Graaf

J'ai trouvé cela à partir d'une recherche Google tout en rencontrant le même problème et je l'ai trouvé très utile. virtualenv a maintenant un drapeau --relocatable qui réécrira la commande Shebang en #!/usr/bin/env <the_python_version_you_used_to_create_the_virtualenv>. Cela vient avec quelques mises en garde, alors assurez-vous de lire la documentation pour comprendre les implications:

https://virtualenv.pypa.io/fr/stable/userguide/#making-environments-relocatable

Pour déplacer le virtualenv, vous devez utiliser la même syntaxe que lors de sa création, sinon la version python risque d’être écrasée. Cela fonctionnera comme prévu ...

virtualenv --python=python3.5 env-test
virtualenv --relocatable --python=python3.5 env-test

alors que cela se traduira par #!/usr/bin/env python2.7 (au moins sur mon environnement local) ...

virtualenv --python==python3.5 env-test
virtualenv --relocatable env-test
0
bob dob