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$
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.
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
La commande pip
ne fonctionnera pas si:
pip
sur Ubuntu, utilisez la commande Sudo apt-get install python-pip
ou Sudo apt-get install python3-pip
)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
.
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.
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
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:
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.
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.
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!
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