web-dev-qa-db-fra.com

installation pip /usr/local/opt/python/bin/python2.7: interprète incorrect: aucun fichier ou répertoire de ce type

Je ne sais pas quel est le problème, mais je suis coincé à la recherche de solutions de transfert de pile qui ne mènent à rien. Pouvez-vous m'aider s'il vous plait?

  Monas-MacBook-Pro:CS764 mona$ Sudo python get-pip.py
    The directory '/Users/mona/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with Sudo, you may want Sudo's -H flag.
    The directory '/Users/mona/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with Sudo, you may want Sudo's -H flag.
    /tmp/tmpbSjX8k/pip.Zip/pip/_vendor/requests/packages/urllib3/util/ssl_.py:90: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.
    Collecting pip
      Downloading pip-7.1.0-py2.py3-none-any.whl (1.1MB)
        100% |████████████████████████████████| 1.1MB 181kB/s 
    Installing collected packages: pip
      Found existing installation: pip 1.4.1
        Uninstalling pip-1.4.1:
          Successfully uninstalled pip-1.4.1
    Successfully installed pip-7.1.0
    Monas-MacBook-Pro:CS764 mona$ pip --version
    -bash: /usr/local/bin/pip: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory
68
Mona Jalal

J'avais utilisé home-brew pour installer 2.7 sur OS X 10.10 et les liens de sym manquaient lors de la nouvelle installation. Iran

brew link --overwrite python

comme mentionné dans Comment faire un lien symbolique python dans Homebrew? et cela a résolu le problème.

141
LancDec

Je suppose que vous avez deux installations Python, ou deux installations PIP, dont l'une a été partiellement supprimée.

Pourquoi utilisez-vous Sudo? Idéalement, vous devriez être capable d’installer et d’exécuter tout à partir de votre compte utilisateur au lieu d’utiliser root. Si vous associez root et votre compte local, vous rencontrerez probablement des problèmes d'autorisations (par exemple, consultez l'avertissement qu'il indique concernant le "répertoire parent n'appartient pas à l'utilisateur actuel").

Qu'est-ce que vous obtenez si vous exécutez ceci?

$ head -n1 /usr/local/bin/pip

Cela vous montrera quelle binaire python pip essaie d'utiliser. Si cela pointe sur /usr/local/opt/python/bin/python2.7, essayez alors de lancer ceci:

$ ls -al /usr/local/opt/python/bin/python2.7

Si ceci indique "Aucun fichier ou répertoire de ce type", alors pip essaye d'utiliser un fichier binaire python qui a été supprimé.

Ensuite, essayez ceci:

$ which python
$ which python2.7

Pour voir le chemin du binaire python qui fonctionne réellement.

Comme il semblerait que pip ait été installé avec succès quelque part, il est possible que /usr/local/bin/pip fasse partie d'une installation plus ancienne de pip qui se situe plus haut dans la variable PATH. Pour tester cela, vous pouvez essayer de déplacer le binaire pip non fonctionnel de cette manière (ceci pourrait nécessiter Sudo):

$ mv /usr/local/bin/pip /usr/local/bin/pip.old

Ensuite, essayez à nouveau d'exécuter votre commande pip --version. Espérons qu'il récupère la version correcte et fonctionne correctement.

39
Steven Kryskalla

Seule solution sous OSX et sa variante.

ln -s /usr/local/bin/python /usr/local/opt/python/bin/python2.7
29
TheExorcist

J'ai fait la même erreur en utilisant Sudo pour mon installation. (Oops)

brew install python
brew linkapps python
brew link --overwrite python 

Cela a tout ramené à la normale.

25
DaveSaunders

Pose de fixation

Pour cette erreur:

~/Library/Python/2.7/bin/pip: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory`

La source de ce problème est un mauvais chemin python codé en dur dans pip (ce qui signifie qu'il ne sera pas corrigé, par exemple en modifiant votre $ PATH). Ce chemin n’étant plus codé en dur dans la dernière version de pip, une solution qui devrait travail est la suivante:

pip install --upgrade pip

Mais bien sûr, cette commande utilise pip, elle échoue donc avec la même erreur.

La façon de vous en sortir:

  1. Exécuter which pip
  2. Ouvrir ce fichier dans un éditeur de texte
  3. Remplacez la première ligne de #!/usr/local/opt/python/bin/python2.7 par ex. #!/usr/local/opt/python2/bin/python2.7 (notez le python2 dans le chemin), ou n’importe quel chemin menant à un interpréteur python actif sur votre ordinateur. 
  4. Maintenant, pip install --upgrade pip (ceci écrase votre hack et permet à pip de fonctionner à la dernière version, où le problème d'interpréteur devrait être corrigé)

Correction de virtualenv

Pour moi, j'ai trouvé ce problème en ayant d'abord le même problème chez virtualenv:

~/Library/Python/2.7/bin/virtualenv: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory`

La solution ici est de courir

pip uninstall virtualenv
pip install virtualenv

Si l'exécution de cette commande génère la même erreur de pip, voir ci-dessus.

17
kotoole

J'ai eu le même problème. Fondamentalement, pip cherchait un mauvais chemin (ancien chemin d'installation) ou un python. La solution suivante a fonctionné pour moi:

  • J'ai vérifié où se trouve le chemin d'accès en python (essayez which python)
  • J'ai vérifié la première ligne du fichier pip (/usr/local/bin/pip2.7 et /usr/local/bin/pip). La ligne doit indiquer le chemin correct du chemin python. Dans mon cas, non. Je l'ai corrigé et maintenant cela fonctionne bien.
12
sahar

Au cas où cela aiderait quelqu'un, la solution mentionnée dans cette autre question fonctionnait pour moi lorsque pip cessait de fonctionner aujourd'hui après l'avoir mise à niveau: Pip cassé après la mise à niveau

Il semble que ce soit un problème lorsqu'un emplacement précédemment mis en cache change. Vous pouvez donc actualiser le cache avec cette commande:

hash -r
8
Jordan

Pour simplifier le fonctionnement, nous pouvons utiliser la commande ci-dessous pour réinstaller la version 2:

brew install python@2

Puis sur mon mac, ça ressemble à ci-dessous:

▶ python -V
Python 2.7.10

▶ python2 -V
Python 2.7.14

▶ python3 -V
Python 3.6.5

▶ pip2 -V
pip 9.0.3 from /usr/local/lib/python2.7/site-packages (python 2.7)

▶ pip3 -V
pip 9.0.3 from /usr/local/lib/python3.6/site-packages (python 3.6)

▶ pip --version
pip 9.0.3 from /usr/local/lib/python2.7/site-packages (python 2.7)
8
feuyeux

J'ai eu le même problème. J'ai les deux Python 2.7 et 3.6 installés. Python 2.7 fonctionnait avec virtualenv, mais après l’installation de Python3, virtualenv a continué à rechercher la version 2.7 et n’a pas pu la trouver. Doing pip install virtualenv a installé la version Python3 de virtualenv.

Ensuite, pour chaque commande, si je veux utiliser Python2, je voudrais utiliser virtualenv --python=python2.7 somecommand

4
yabrol

J'ai eu le même problème, virtualenv pointait vers un ancien chemin python. La correction du chemin a résolu le problème:

$ virtualenv -p python2.7 env
-bash: /usr/local/bin/virtualenv: /usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directory

$ which python2.7
/opt/local/bin/python2.7

# needed to change to correct python path
$ head  /usr/local/bin/virtualenv
#!/usr/local/opt/python/bin/python2.7 <<<< REMOVED THIS LINE
#!/opt/local/bin/python2.7 <<<<< REPLACED WITH CORRECT PATH

# now it works:
$ virtualenv -p python2.7 env
Running virtualenv with interpreter /opt/local/bin/python2.7
New python executable in env/bin/python
Installing setuptools, pip...done.
4
d g

Étant donné que python 2 et 3 étaient installés sur Mac OSX, je rencontrais toutes sortes d’erreurs.

J'ai utilisé lequel pour trouver l'emplacement de mon fichier python2.7 (/usr/local/bin/python2.7)

which python2.7

Ensuite, j'ai lié de manière symétrique mon emplacement d'installation réel avec python2.7 à celui attendu par le script:

ln -s /usr/local/bin/python2.7 /usr/local/opt/python/bin/python2.7
2
Simon Briggs

J'ai le même problème. Si je lance brew link --overwrite python2. Il y avait toujours zsh: /usr/local/bin//fab: bad interpreter: /usr/local/opt/python/bin/python2.7: no such file or directory.

cd /usr/local/opt/
mv python2 python

Résolu! Nous pouvons maintenant utiliser la structure de la version python2.

=== 2018/07/25 mis à jour

Il existe un moyen pratique d’utiliser python2 version fab lorsque votre os python est lié à python3. .sh pour votre commande.

# fab python2
cd /usr/local/opt
rm python
ln -s python2 python

# use the fab cli
...

# link to python3
cd /usr/local/opt
rm python
ln -s python3 python

J'espère que cela t'aides.

1
Peter. Chen

La modification de la première ligne de ce fichier a fonctionné pour moi:

MBP-de-Jose:~ josejunior$ which python3

/usr/local/Cellar/python/3.7.3/bin/python3

MBP-de-Jose:~ josejunior$

avant

#!/usr/local/opt/python/bin/python3.7

après

#!/usr/local/Cellar/python/3.7.3/bin/python3
1
José Junior

Tout ce que vous avez à faire est de… fermer la fenêtre du terminal et en rouvrir une nouvelle pour résoudre ce problème.

Le problème, c'est que le nouveau chemin python n'est pas ajouté à bashrc (une fenêtre de source ou une nouvelle fenêtre de terminal aiderait).

1
Nithin Kumar Gaddam

Dans mon cas, j'ai décidé de supprimer l'installation homebrew Python de mon Mac car j'avais déjà deux autres versions de Python installées sur mon Mac via MacPorts. Cela a provoqué le message d'erreur. 

Réinstaller Python par brassage a résolu mon problème.

1
Simon
Sudo /usr/bin/easy_install pip

cette commande a fonctionné pour moi

0
user9022502