web-dev-qa-db-fra.com

Problème avec virtualenv sous Mac OS X

J'ai installé virtualenv via pip et j'obtiens cette erreur après avoir créé un nouvel environnement: 

Selenium:~ auser$ virtualenv new  
New python executable in new/bin/python  
ERROR: The executable new/bin/python is not functioning  
ERROR: It thinks sys.prefix is u'/System/Library/Frameworks/Python.framework/    Versions/2.6' (should be '/Users/user/new')  
ERROR: virtualenv is not compatible with this system or executable  

Dans mon environnement: 

PYTHONPATH=/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages  
PATH=/System/Library/Frameworks/Python.framework/Versions/2.6/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/Library/Frameworks/Python.framework/Versions/2.6/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin  

Comment puis-je réparer cela?

Merci.

41
gigimon

Si vous continuez à avoir des problèmes avec virtualenv, vous pouvez plutôt essayer pythonbrew . C'est une solution alternative au même problème. Cela fonctionne plus comme Ruby's -rvm : Il construit et crée une instance entière de Python, sous $HOME/.pythonbrew, puis configure certaines fonctions bash qui vous permettent de passer facilement d’une version à l’autre. Où virtualenv masque la version système de Python, en utilisant des liens symboliques dans le cadre de sa solution, pythonbrew crée des installations entièrement autonomes de Python.

J'ai utilisé virtualenv pendant des années. C'est une solution décente, mais je suis passé à pythonbrew récemment. Avoir des instances Python complètement autonomes signifie que l'installation d'une nouvelle instance prend un certain temps (étant donné que pythonbrew compile réellement Python à partir de rien), mais la nature autonome de chaque installation m'interpelle. Et le disque est bon marché.

0
Brian Clapper

Juste au cas où quelqu'un chercherait toujours la réponse.

J'ai rencontré ce même problème aujourd'hui et me suis rendu compte que, puisque j'ai déjà installé Anaconda, je n'aurais pas dû utiliser pip install virtualenv pour installer un environnement virtuel, car cela me donnerait le message d'erreur si j'essayais de l'initialiser ultérieurement. Au lieu de cela, j'ai essayé conda install virtualenv, puis entré virtualenv env_mysite et le problème résolu.

108
wastetime909

Au cas où quelqu'un à l'avenir rencontrerait ce problème - ceci est dû au fait que votre distribution Python par défaut est conda. Conda a son propre processus virtuel env set up mais si vous avez la distribution conda de python et souhaitez toujours utiliser virtualenv, voici comment:

  1. Recherchez l’autre distribution Python sur votre machine: ls -ls /usr/bin/python*

  2. Prenez note de la version disponible de Python qui n’est pas compatible et exécutez le code ci-dessous (remarque pour python 3 et supérieur, vous devez d’abord mettre à niveau virtualenv): virtualenv -p python2.7(or your python version) flaskapp

6
Hans Ziqiu Li

Comme mentionné par @RyanWilcox, il est possible que vous ayez par inadvertance dirigé virtualenv sur la mauvaise installation Python. Virtualenv est livré avec un drapeau -p pour vous permettre de spécifier quel interpréteur utiliser.

Dans mon cas,

virtualenv test_env

jeté la même erreur que la votre, alors que

virtualenv -p python test_env

a fonctionné parfaitement.

Si vous appelez virtualenv -h, la documentation de l'indicateur -p vous indiquera le python qu'il pense utiliser. si cela vous semble insignifiant, essayez de passer -p python. Pour référence, je suis sur virtualenv 1.11.6.

5
kronosapiens

J'ai moi-même rencontré ce problème. J'ai écrit les instructions dans un fichier README, que j'ai collé ci-dessous ....

J'ai constaté qu'il y a deux choses qui fonctionnent:

  1. Assurez-vous que vous utilisez la dernière version de virtualenv (1.5.1, de cette écriture)
  2. Si vous utilisez un Python non-système comme votre Python standard (le python à vérifier), utilisez avec force celui fourni par le Système.

    Au lieu de virtualenv thing, utilisez /usr/bin/python2.6 PATH/TO/VIRTUALENV thing (ou le which python qui vous est retourné - c'est ce qu'il a fait pour moi lorsque j'ai rencontré ce problème)

4
RyanWilcox

J'ai eu le même problème et comme je le vois maintenant, il a été causé par une installation désordonnée de Python. OS X est installé depuis plus d’un an depuis que j’ai acheté un nouvel ordinateur portable et j’ai déjà installé et réinstallé Python plusieurs fois à l’aide de différentes sources (fichiers binaires officiels, homebrew, fichiers binaires officiels + ajustements faits à la main comme décrit ici ) . Ne me demandez pas pourquoi j'ai fait ça, je suis juste un débutant misérable qui croit que tout va s'arranger après avoir été réinstallé. 

Donc, j'ai eu un certain nombre de Pythons différents installés ici et là, ainsi que de nombreux liens fixes les pointant de manière incohérente. Finalement, j'en ai eu marre de tous et oS X réinstallé J'ai soigneusement nettoyé le système de tous les Pythons que j'ai trouvés en utilisant l'utilitaire find. De plus, j'ai dissocié tous les liens pointant vers n'importe quel Python de partout. Ensuite, j'ai installé un nouveau Python en utilisant homebrew, virtualenv et tout fonctionne comme un charme maintenant.

Donc, ma recette est:

Sudo find / -iname "python*" > python.log

Puis analysez ce fichier, supprimez et dissociez tout ce qui concerne la version de Python dont vous avez besoin, réinstallez-le (je l’ai fait avec homebrew, l’installation officielle fonctionnera également) et amusez-vous. Assurez-vous de dissocier tout ce qui est lié à python de /usr/bin et /usr/local/bin, ainsi que de supprimer toutes les instances de Frameworks/Python.framework/Versions/<Your.Version> dans /Library et /System/Library

C'est peut-être un sale coup, mais ça a fonctionné pour moi. Je préfère ne conserver aucune bibliothèque Python à l'échelle du système, à l'exception de pip et virtualenv, et créer des environnements virtuels pour tous mes projets. Je ne me soucie donc pas de supprimer les bibliothèques importantes. Si vous ne voulez pas tout supprimer, essayez quand même de savoir si vos Pythons sont, quels liens pointent vers eux et d'où. Pensez ensuite à ce qui peut causer le problème et corrigez-le.

3

Les solutions ci-dessus ont échoué pour moi, mais les suivantes ont fonctionné:

python3 -m venv --without-pip <ENVIRONMENT_NAME>
. <ENVIRONMENT_NAME>/bin/activate
curl https://bootstrap.pypa.io/get-pip.py | python
deactivate

C'est hacky, mais oui, le problème central semblait vraiment être pip.

1
Jerry Schirmer

J'ai rencontré une variante de l'erreur "ne fonctionne pas" . J'essayais de créer un environnement dans un dossier contenant le chemin ".../Programming/Developing ...", qui est en réalité "/ Utilisateurs/eric/Documents/Programmation: développement/"

et j'ai cette erreur:

ImportError: No module named site
ERROR: The executable env/bin/python2.7 is not functioning
ERROR: It thinks sys.prefix is u'/Users/eric/Documents/Programming:Developing/heroku' (should be u'/Users/eric/Documents/Programming:Developing/heroku/env')
ERROR: virtualenv is not compatible with this system or executable

J'ai essayé la même chose dans un dossier différent et cela a bien fonctionné, pas d'erreur et env/bin a ce que j'attendais (activer, etc.).

1
E Negron

J'ai le même problème et j'ai constaté que cela se produit lorsque vous ne spécifiez pas correctement le nom de l'exécutable python. Donc pour Python 2x, par exemple:

virtualenv --system-site-packages -p python mysite

Mais pour Python 3.6, vous devez spécifier le nom de l’exécutable comme python3.6.

virtualenv --system-site-packages -p python3.6 mysite 

1
A. K.

Ouvrez le terminal et tapez /Library/Frameworks/Python.framework/Versions/

puis tapez ls /Library/Frameworks/Python.framework/Versions/2.7/bin/ si vous utilisez Python2 (ou tout autre).

Editez ~/.bash_profile et ajoutez la ligne suivante: export PATH=$PATH:/Library/Frameworks/Python.framework/Versions/2.7/bin/

cat ~/.bash_profile

Dans mon cas, le contenu de ~/.bash_profile est le suivant:

export PATH=$PATH:/Library/Frameworks/Python.framework/Versions/2.7/bin/

Maintenant, la commande virtualenv devrait fonctionner.

0
hygull

J'ai suivi les étapes suivantes pour que virtualenv fonctionne: 

Mettez à jour virtualenv comme suit: 

==> Sudo pip install --upgrade virtualenv

Initialisez python3 virtualenv:

==> virtualenv -p python3 venv
0
Das

J'ai aussi eu ce problème, et j'ai essayé la méthode suivante qui a fonctionné pour moi:

conda install virtualenv

virtualenv --system-site-packages /anaconda/envs/tensorflow (ici envs conserve tous les environnements virtuels créés par l'utilisateur)

source /anaconda/envs/tensorflow/bin/activate

J'espère que c'est utile.

0
Nicole

J'ai eu le même problème et je peux confirmer qu'il s'agissait d'un fichier virtualenv.py obsolète. 

Il n'était pas nécessaire de faire un ensemble de install --upgrade

Le remplacement du fichier virtualenv.py par la version la plus récente suffit. 

0
haxtar

Sur OSX 10.6.8 leopard, après avoir "migré" vers Lion, puis rétrogradé (ouch - EVOID!), Je suis passé par la méthode Wolf Paulus il y a quelques mois, complètement ignorant de python. python 2.7 supprimé et "remplacé" par 3.something. Mon programme FTP a cessé de fonctionner (Fetch) et qui sait quoi d’autre repose sur Python 2.7. Donc, à ce moment-là, j'ai téléchargé la dernière version de 2.7 à partir de python.org et son programme d'installation m'a permis de démarrer - jusqu'à ce que j'essaie d'utiliser virtualenv.

Ce qui semble avoir fonctionné pour moi cette fois-ci a été de supprimer totalement Python 2.7 avec ce code:

Sudo rm -R /System/Library/Frameworks/Python.framework/Versions/2.7

supprimer tous les liens avec ce code: 

Sudo rm /usr/bin/pydoc
Sudo rm /usr/bin/python
Sudo rm /usr/bin/pythonw
Sudo rm /usr/bin/python-config

J'avais essayé d'installer python avec homebrew, mais apparemment cela ne fonctionnera que si tous les XTools sont installés, ce que j'évitais, car la version de XTools compatible avec 10.6 est ancienne et de 4 Go. La plupart du temps, c'est GCC, le compilateur , que vous pouvez obtenir ici .

Je viens donc d'installer le dernier téléchargement à partir de python.org .

Ensuite, j'ai dû réinstaller easy_install, pip, virtualenv.

Je me demandais certainement quand il serait temps d'acheter un nouvel ordinateur portable, mais il y a beaucoup à dire sur l'achat de moins de matériel (travail forcé, exploitation minière non éthique, etc.).

0
MikeiLL