web-dev-qa-db-fra.com

Utiliser virtualenv avec des espaces dans un chemin

J'ai configuré un environnement virtualenv sur mon Mac, mais je ne parviens pas à faire installer Pip par Pip. Il échoue avec l'erreur suivante:

/Volumes/Macintosh: bad interpreter: No such file or directory

J'ai suivi le problème jusqu'à ce qu'il y ait un espace dans le chemin, comme il est répondu ici: https://stackoverflow.com/a/10873611/126564
(le chemin étant /Volumes/Macintosh HD/Python/my_project)

Mais c'est un peu un problème. La solution proposée consiste à:

"il suffit de placer votre environnement virtualenv dans un chemin sans espace",

mais la partie avec l'espace est le volume lui-même. Tous mes chemins auraient un espace, sauf si je les ai stockés dans un répertoire de /. Et je ne pense pas que "stocker vos données en dehors de l'espace utilisateur" soit une bonne solution.

Y a-t-il une meilleure solution à cela?

48
redwall_hp

Essayer ceci:

  • éditez bin/activate, changez VIRTUAL_ENV='/Volumes/Macintosh HD/Python/my_project' et changeez PATH="$VIRTUAL_ENV/bin:$PATH" pour le faire fonctionner dans votre environnement. en utilisant echo $PATH pour vérifier si cela fonctionne.
  • en éditant bin/pip et bin/easy_install, remplacez la première ligne des deux fichiers par 

    #!/usr/bin/env python

Après les deux étapes ci-dessus, votre virtualenv fonctionnera (également pip/easy_install).

34
Vincent Wen

Notez que vous ne devez pas utiliser votre dossier de projet pour virtualenv. Par exemple, vous pouvez placer votre virtualenv dans le dossier/tmp ou dans tout autre dossier sans espaces:

virtualenv /tmp/temporary_virtualenv
virtualenv /home/my_envs/env_for_projectname
17
Oleksandr Fedorov

J'ai encore une autre solution de contournement - il vous suffit d'utiliser pip package au lieu de pip script . Par exemple:

python -m pip install .

ou même:

python -m pip install -U pip

Pour moi, fonctionne comme un charme et ne nécessite pas de modifications dans les fichiers.

7
Tupteq

La modification du fichier bin/activate et la suppression des espaces ont fonctionné pour moi. Modifiez et enregistrez le fichier, puis exécutez source bin/activate.

5
Leandro Lima

Sauf si vous avez une configuration de lecteur atypique sur votre Mac, le chemin /Volumes/Macintosh HD devrait être un lien symbolique vers /. En d'autres termes, au lieu de 

$ virtualenv /Volumes/Macintosh\ HD/venvpath

tu peux juste faire

$ virtualenv /venvpath

Non pas que j'essaie de tolérer que les logiciels ne gèrent pas les espaces dans les noms de fichiers Je suis d’accord avec commentaire de Hugo ci-dessus: gardez un œil sur le problème de GitHub .

3
duozmo

À la fin de 2018, les dernières versions de pip et virtualenv traitent correctement les espaces dans venv dir.

Voir https://github.com/pypa/virtualenv/issues/53#issuecomment-434461292 .

1
Greg Dubicki