web-dev-qa-db-fra.com

comment résoudre "mauvais interprète: trop de niveaux de liens symboliques"

J'essaie d'installer numpy dans un environnement virtuel que j'ai créé. J'ai utilisé les séries de commandes suivantes pour créer et activer, puis installer une version locale de numpy (toutes celles-ci après leur cd-ing dans le dossier du projet).

virtualenv venv
source venv/bin/activate
pip install numpy

Cependant, après la dernière commande, j'obtiens cette erreur: 

bash: /home/fieldsofgold/Desktop/test/venv/bin/pip: /home/fieldsofgold/Desktop/test/venv/bin/python: bad interpreter: Too many levels of symbolic links

Quelqu'un pourrait-il m'aider s'il vous plaît à le résoudre et laissez-moi savoir ce qui pourrait mal se passer?

J'utilise Ubuntu 14.04 dans VirtualBox, et la version de Python est 2.7.6.

8
QPTR

J'avais le même problème et je l'ai résolu simplement en supprimant l'ancien fichier env avec rm -rf env. Ensuite, j'ai créé un nouvel environnement avec virtualenv env, suivi de l'installation de la configuration requise, normalement pip install -r requirements.txt, puis j'ai pu exécuter mon application avec succès.

11
Mark Francis

Lorsque j'ai essayé d'installer Tensorflow de Virtualenv, j'ai également abordé cette question. Je viens de supprimer le vieil env, puis construit un nouvel env. Ça marche. 

Lorsque je tape which pip, il retourne /Users/xiang/tensorflow/bin/pip. Quel est exactement le chemin dans le nouvel env que j'ai construit.

1
ShawnZhu

Vous pouvez avoir python en cours d’exécution dans une autre instance de terminal. Assurez-vous de fermer toutes les instances supplémentaires de terminaux

1
Saurabh Kumar

Cette erreur se produit car vous démarrez un nouveau processus. Dans mon cas, l’environnement virtuel du projet Django est copié et, une fois qu’ils deviennent nombreux, vous obtenez cette erreur. Supprimez simplement l’ancien env et créez un nouveau fichier. environnement.

0
Mahipalsaran

J'ai eu ça. Dans mon cas, je ne suis pas sûr de ce qui s'est passé mais mon python2 a été remplacé par un lien. J'avais donc:

ls -l
lrwxrwxrwx 1 <me> staff    7 Oct 23 14:04 python -> python2
lrwxrwxrwx 1 <me> staff    6 Nov  6 14:28 python2 -> python
lrwxrwxrwx 1 <me> staff    7 Oct 23 14:04 python2.7 -> python2

Le lien du milieu est faux, il s’agit d’une référence circulaire, ce devrait être l’exécutable (il ya déjà une autre chose à regarder). J'ai supprimé python2 et copié le fichier réel (dans mon cas, /bin/python2.7) là-bas:

rm python2
cp /bin/python2.7 python2
ls -l
lrwxrwxrwx 1 <me> staff    7 Oct 23 14:04 python -> python2
-rwxr-xr-x 1 <me> staff 7216 Dec  6 14:57 python2
lrwxrwxrwx 1 <me> staff    7 Oct 23 14:04 python2.7 -> python2

(NOTE: Je ne peux pas parler pour toutes les distributions. Vous aurez besoin de créer votre propre version. Essayez ceci:

ls -l `which python`

et s'il s'agit d'un lien, suivez-le jusqu'à ce que vous obteniez le fichier exécutable réel. Pour moi, c'était/bin/python -> python2 -> python2.7. Ergo j'ai copié /bin/python2.7)

0
Ingo

Je peux vaguement supposer que la raison en est que vous avez un virtuel se pointant sur lui-même. Je peux en outre vaguement supposer que cela se produirait si vous tentiez de créer un virtualenv, mais décidez ensuite de le refaire sans exécuter deactivate. Ensuite, vous avez python dans le virtualenv pointant sur ... python dans (effectivement) le même virtualenv par un lien symbolique.

Comme il s’agit d’une hypothèse spéculative, j’espère que quelqu'un qui a réellement ce problème peut confirmer ou nier que c’est ce qui s’est passé.

Quoi qu’il en soit, si c’est le cas, les autres réponses à cette question disant de supprimer l’env et de recommencer sont globalement correctes, mais rappelez-vous de deactivate en premier.

0
tripleee