为什么所有Python包都突然消失了?

时间:2017-07-22 16:50:44

标签: python opencv pip packages easy-install

今天我想在我的OSX笔记本电脑上运行(自编)Python脚本,但突然之间,所有导入都返回ImportError。该脚本大约一个月前运行良好,同时我没有改变任何Python。此外,我确信当时我没有使用过virtualenv。

所以我刚刚开始重新安装所有软件包(甚至pip需要重新安装)。我还需要OpenCV,为此我运行brew install opencv3,但这给了我:

Warning: homebrew/science/opencv3 3.2.0 is already installed

即使我仍然无法在Python中导入它:

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

我当然可以卸载并重新安装OpenCV,但这真让我感到惊讶;怎么会发生这种情况?有什么可能抹掉所有Python包?

欢迎所有提示!

修改

好的,我刚才发现在使用brew安装的Python之前,python命令以某种方式链接回/usr/bin/python而不是/usr/local/Cellar/python/2.7.13_1/bin/python2,其中所有包都是仍然安装正确。 因此,要将python链接回我生成brew unlink python && brew link python的brew版本,但which python仍然引用/usr/bin/python

哪位才华横溢的灵魂可以引导我回到使用brew Python?

EDIT2

我刚检查this list of suggestions以再次将python链接到brew版本,但似乎没有任何效果。让我告诉你我做了什么:

$ 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

然后我重新启动了终端,但which python仍然给了我/usr/bin/python

然后我重新启动了整个操作系统,但令人沮丧的是which python仍然给了我/usr/bin/python

谁能让我摆脱这种酿造混乱?!

1 个答案:

答案 0 :(得分:1)

好的,经过大量的讨论,我发现文件夹/usr/local/Cellar/python/2.7.13_1/bin/没有包含名为python的符号链接,仅包含python2python2.7

所以最后我通过在/usr/local/Cellar/python/2.7.13_1/bin/中创建一个新的符号链接来解决它:

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

之后我跑了

brew unlink python && brew link python

解决了我所有的问题。

感谢您的关注和持续的灵感!

PS。虽然这是解决我的麻烦的办法,但我仍然不确定这是怎么回事。如果有人能够启发我当然仍然非常欢迎!