2017-07-22 5 views
2

Aujourd'hui, je voulais exécuter un script Python (auto-écrit) sur mon ordinateur portable OSX, mais tout à coup, toutes les importations ont retourné un ImportError. Le script fonctionnait bien il y a environ un mois et en attendant, je n'ai rien changé à Python. De plus, je suis sûr que je n'ai pas utilisé de virtualenv à l'époque.Pourquoi tous les paquets Python ont-ils soudainement disparu?

Je viens de commencer à réinstaller tous les paquets (même pip avait besoin d'être réinstallé). Je dois aussi OpenCV, pour que je dirige brew install opencv3, mais cela me donne:

Warning: homebrew/science/opencv3 3.2.0 is already installed 

même si je ne peux toujours pas importer en Python:

>>> import cv2 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named cv2 

je peux de désinstaller des cours et réinstaller OpenCV mais ça me fait vraiment réfléchir. Comment cela est-il arrivé? Qu'est-ce qui pourrait effacer tous les paquets Python?

Tous les conseils sont les bienvenus!

EDIT

Ok, je viens de découvrir que avant que j'utilisais Python installé par brew, mais que la commande python lié en quelque sorte revenir à /usr/bin/python au lieu de /usr/local/Cellar/python/2.7.13_1/bin/python2 dans lequel tous les paquets sont encore installés correctement. Donc, pour relier python revenir à la version de bière que je courais brew unlink python && brew link python, mais which python se réfère encore /usr/bin/python

Quelle âme brillante peut me guider vers d'utiliser le Python brasser?

EDIT2

Je viens de vérifier this list of suggestions pour relier python à la version de brasser à nouveau, mais rien ne semble fonctionner. Laissez-moi vous montrer ce que je faisais:

$ echo $PATH 
/usr/local/opt/opencv3/bin:/opt/local/bin:/opt/local/sbin:/usr/local/heroku/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/bin:/Users/hielke/Library/Android/sdk:/Users/hielke/Library/Android/sdk/tools:/Users/hielke/Library/Android/sdk/platform-tools:/usr/local/mysql/bin:/Users/hielke/.composer/vendor/bin 
# which shows `/usr/local/bin` before `/usr/bin` 

$ brew link --overwrite python 
Warning: Already linked: /usr/local/Cellar/python/2.7.13_1 
To relink: brew unlink python && brew link python 
$ which python 
/usr/bin/python # <= STILL RUNNING THE SYSTEM PYTHON 
$ brew unlink python && brew link python 
Unlinking /usr/local/Cellar/python/2.7.13_1... 26 symlinks removed 
Linking /usr/local/Cellar/python/2.7.13_1... 26 symlinks created 
$ which python 
/usr/bin/python # <= STILL RUNNING THE SYSTEM PYTHON 

$ cat /etc/paths 
/usr/local/bin 
/usr/bin # THIS SEEMS TO BE CORRECT 
/bin 
/usr/sbin 
/sbin 

Je puis remis en marche le terminal, mais which python me donne encore /usr/bin/python.

Alors j'ai redémarré l'ensemble du système d'exploitation, mais frustrant which python me donne encore /usr/bin/python.

Qui peut me sortir de ce bazar?!

+1

Imprime le 'sys.path' et trouve si le paquet opencv est dans le chemin – aristotll

+0

Mon vote va à" quelque chose gâché avec un fichier pth ". –

+0

@aristotll - Il s'avère que j'utilisais le mauvais Python. J'utilisais soudainement le système python installé à la place de la version installée de Python (qui est celle dans laquelle tous les paquets sont installés). J'ai édité ma question. Auriez-vous une idée de comment relier 'python' à la version de brassage? – kramer65

Répondre

1

Ok, après beaucoup de déconner, je trouve que le dossier /usr/local/Cellar/python/2.7.13_1/bin/ ne contenait pas un lien symbolique appelé python, juste python2 et python2.7.

Donc finalement je l'ai résolu en créant un nouveau lien symbolique dans /usr/local/Cellar/python/2.7.13_1/bin/ comme ceci:

ln -s ../Frameworks/Python.framework/Versions/2.7/bin/python python 

Après que je courais

brew unlink python && brew link python 

qui a résolu tous mes problèmes.

Merci pour votre attention et votre inspiration continue!

ps.Même si c'était une solution à mes problèmes, je ne sais toujours pas comment cela aurait pu se passer. Si quelqu'un peut m'éclairer c'est bien sûr toujours le bienvenu!