web-dev-qa-db-fra.com

Obtention d'une erreur d'environnement virtuel Python après l'installation de Lion

Je n'ai pas touché à python et virtualenv depuis un moment, et je crois avoir configuré mon MBP avec virtualenv et pip, mais j'ai totalement oublié comment cela fonctionne.

Après l'installation de lion, je reçois cette erreur lorsque j'ouvre une nouvelle fenêtre de terminal:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named virtualenvwrapper.hook_loader
virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenv has been installed for VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is set properly.

Des conseils sur la façon de résoudre ce problème?

En essayant:

easy_install eventlet

J'ai eu ceci:

Traceback (most recent call last):
  File "/usr/local/bin/easy_install", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 2607, in <module>
    parse_requirements(__requires__), Environment()
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/pkg_resources.py", line 565, in resolve
    raise DistributionNotFound(req)  # XXX put more info here
pkg_resources.DistributionNotFound: setuptools==0.6c11
26
Blankman

Je suis un novice complet de Python/Virtualenv. Cependant, j'avais exactement le même problème et j'ai trouvé une solution qui fonctionnait pour moi. Je pense que cela variera considérablement en fonction de la manière dont vous avez initialement configuré Python & Virtualenv.

Dans mon cas, la mise à niveau de Lion a complètement effacé tout le contenu de mon /Library/Python/2.*/site-packages, mais a laissé les exécutables maintenant brisés (qui renvoient au contenu de ce dossier) dans /usr/local/bin. Je crois que c'est la cause première des erreurs d'importation cryptiques "Aucun module".

En examinant mon .bash_history, j’avais initialement utilisé easy_install pour installer pip, puis pip pour installer virtualenv et virtualenvwrapper. Une fois que j'ai répété ces étapes, j'ai ensuite pu rentrer dans mes anciens environnements virtuels qui contenaient toujours tous les packages que j'avais installés sur 10.6. Notez cependant que 10.6 est livré avec Python 2.6 par défaut. Si vos packages nécessitent Python 2.6, vous devez d’abord modifier votre version de Python par défaut en 2.6.

Pas à pas:

  1. J'ai supprimé les anciennes commandes de configuration de Virtualenv de mes scripts de démarrage du shell (par exemple, .bash_profile). Démarrer une nouvelle session de terminal.
  2. (facultatif) Choisissez la version de Python que vous souhaitez utiliser, par exemple,
    defaults write com.Apple.versioner.python Version 2.6
  3. Sudo easy_install pip. Il semble que /Library/Python/2.*/site-packages nécessite maintenant des privilèges d'administrateur. Je ne me souviens pas que ce soit le cas dans 10.6 (ou du moins mon historique de bash ne reflète pas cela).
  4. Sudo pip install virtualenv
  5. Sudo pip install virtualenvwrapper
  6. Enfin, j’ai réactivé les commandes de configuration de virtualenv que j’ai désactivées à l’étape 1. Une nouvelle session de terminal retrouvait tout son contenu (consultez pip freeze -l pour voir les packages locaux dans cet environnement virtuel). Je pense.
41
Matt B.

Ma solution sur Ubuntu 14.04 où j'avais installé python3.4 consistait à ajouter ceci au fichier ~/.bashrc afin que sa queue ressemble à ceci:

#Setup virtual envwrapper for python in case default doesn't work
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.4
export VIRTUALENVWRAPPER_PYTHON

# needed for virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/projects
source /usr/local/bin/virtualenvwrapper.sh

Quand j’ai fait pip freeze sur un python normal (2.7), il a montré que les paquets étaient installés correctement mais que je me suis toujours plaint. Même s’il s’est plaint, la virtualenv a fonctionné. 

J'ai ensuite supprimé les erreurs en m'assurant que tous les fichiers du fichier ~/.virtualenvs appartiennent à l'utilisateur et au groupe plutôt qu'à un petit nombre d'entre eux à la racine. Comme ça:

bash cd ~ Sudo chown -R ubuntu:ubuntu .virtualenvs

22
hum3

Avez-vous installé virtualenv pour le Python que vous utilisez? Si vous utilisez le système par défaut fourni par Apple, Python 2.7, le package virtualenv n'est pas livré préinstallé. Utilisez /usr/bin/easy_install pour l'installer.

UPDATE: Juste pour clarifier, sur Lion 10.7, il existe maintenant un Python 2.7 fourni par Apple, qui est la version par défaut lorsque vous utilisez /usr/bin/python. Apple continue également d’envoyer un Python 2.6 et un 2.5 dans Lion comme dans 10.6 Snow Leopard. Vous pouvez choisir la version de votre choix en la référant explicitement, comme dans /usr/bin/python2.7, /usr/bin/python2.6, etc., et vous pouvez changer la valeur par défaut utilisée par /usr/bin/python; lisez la page de manuel Apple (man python) pour plus de détails. Cependant, l’essentiel est que les packages Python soient installés avec une version spécifique. Si vous avez installé quelque chose pour la version 2.6, vous devrez l’installer avec python2.7 (ou easy_install-2.7) si vous voulez l’utiliser avec la version 2.7.

6
Ned Deily

Blankman,

J'ai rencontré la même erreur mais mon problème avec le recul était simple, je partage mon travail ci-dessous. YMMV.

J'ai utilisé (home) brasser pour installer Python 2.7.2 et je l’utilise par défaut. Il est référencé via/usr/local/bin/python. L'installation python d'origine fournie avec Mac OS X Lion est référencée à/usr/bin/python. 

-

Le script de démarrage de virtualwrapper.sh a vérifié la variable d'environnement VIRTUALENVWRAPPER_PYTHON et, le cas échéant, l'a rempli avec '/ usr/local/bin/python'. C'était la raison de mon erreur. Son initialisation dans '/ usr/local/bin/python' corrigeait le problème. 

HTH.

Clarifier. J'ai installé python 2.7.2 à l’aide de brew et je l’associe à virtualenv pour mieux gérer mes environnements de développement. J'essaie d'éviter autant que possible l'installation préinstallée.

5
Amar

Pour résoudre le deuxième problème, vous devez réinstaller setuptools.

Et pour réparer le premier, installez simplement virtualenvwrapper avec cela.

En gros, lorsque vous installez Lion, vous devez réinstaller tous vos packages-sites Python.

2
Pavel Shvedov

Pour tous les autres qui tirent les cheveux là-bas ... J'ai eu cette même erreur, mais seulement en essayant scp (copie sécurisée) sur l'un de mes autres macs. Il m'a fallu un certain temps pour comprendre que le message était pertinent pour le Mac auquel je me connectais. Pour os x .bash_profile s'exécutant lors de la connexion, je ne récupérais pas correctement mon fichier .bashrc à partir du fichier .bash_profile pour définir les paramètres d'environnement. Ned grandes lignes. Assurez-vous donc que ces paramètres sont également définis pour la machine à laquelle vous vous connectez.

1
smileBot

oui, après la mise à niveau vers marvericks, vous devez installer à nouveau pip et virtualenv à l’aide de/usr/bin/easy_install.

1
allen.bang

Je devais réinstaller setup-tools (dans ce cas, le Python 2.7 Egg for Mountain Lion), puis je pouvais réinstaller pip, puis virtualenv.

1
Imanol

Je l'ai reçu après la mise à niveau vers Yosemite. Pour réparer je devais courir: 

Sudo pip install --upgrade setuptools
0
donturner