今天我想在我的 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版本brew unlink python && brew link python
,但是which python
仍然指/usr/bin/python
哪位聪明人可以指导我重新使用brew Python?
编辑2
我刚刚查看了 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
.
谁能帮我摆脱困境?!
最佳答案
好吧,经过一番折腾,我发现文件夹 /usr/local/Cellar/python/2.7.13_1/bin/
不包含名为 python 的符号链接(symbolic link)
,只是python2
和python2.7
。
最后我通过在 /usr/local/Cellar/python/2.7.13_1/bin/
中创建一个新的符号链接(symbolic link)解决了这个问题,如下所示:
ln -s ../Frameworks/Python.framework/Versions/2.7/bin/python python
之后我就跑了
brew unlink python && brew link python
解决了我所有的问题。
感谢您的关注和持续的灵感!
ps。虽然这解决了我的麻烦,但我仍然不确定这是怎么发生的。如果有人能够启发我,那当然仍然非常受欢迎!
关于python - 为什么所有 Python 包突然消失了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45257009/