【发布时间】:2017-12-28 15:32:34
【问题描述】:
今天我想在我的 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。
谁能把我从这个酿造混乱中解救出来?!
【问题讨论】:
-
打印
sys.path并查找opencv包是否在路径中 -
我的票投给了“pth 文件有问题”。
-
@aristotll - 原来我使用了错误的 Python。我突然使用系统安装的python而不是brew安装的Python(这是安装所有软件包的那个)。我编辑了我的问题。您知道如何将
python再次链接到 brew 版本吗? -
@kramer65
echo $PATH看看/usr/local/bin是否在/usr/bin之前 -
@aristotll - 我只是遵循了这个答案列表中的几乎所有提示stackoverflow.com/questions/5157678/python-homebrew-by-default,但似乎没有任何效果。我编辑了我的问题以包含我尝试过的所有内容。您还有其他想法吗?
标签: python opencv pip packages easy-install