为什么所有 Python 个包突然都不见了?
Why are all Python packages suddenly gone?
今天我想在我的 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
命令以某种方式 link 返回 /usr/bin/python
/usr/local/Cellar/python/2.7.13_1/bin/python2
个,其中所有软件包仍然正确安装。
所以要linkpython
回到我运行brew unlink python && brew link python
的brew版本,但是which python
还是指/usr/bin/python
哪位高手可以指导我重新使用 brew Python?
编辑2
我刚刚检查了this list of suggestions到linkpython
到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
。
然后我重新启动了整个 OS,但令人沮丧的是 which python
仍然给我 /usr/bin/python
。
谁能帮我摆脱这个 brew 的烂摊子?!
好吧,经过一番折腾,我发现文件夹/usr/local/Cellar/python/2.7.13_1/bin/
并没有包含名为python
的符号链接,只有python2
和python2.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。虽然这是解决我的麻烦的方法,但我仍然不确定这是怎么发生的。如果有人能赐教,那当然还是非常欢迎!
今天我想在我的 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
命令以某种方式 link 返回 /usr/bin/python
/usr/local/Cellar/python/2.7.13_1/bin/python2
个,其中所有软件包仍然正确安装。
所以要linkpython
回到我运行brew unlink python && brew link python
的brew版本,但是which python
还是指/usr/bin/python
哪位高手可以指导我重新使用 brew Python?
编辑2
我刚刚检查了this list of suggestions到linkpython
到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
。
然后我重新启动了整个 OS,但令人沮丧的是 which python
仍然给我 /usr/bin/python
。
谁能帮我摆脱这个 brew 的烂摊子?!
好吧,经过一番折腾,我发现文件夹/usr/local/Cellar/python/2.7.13_1/bin/
并没有包含名为python
的符号链接,只有python2
和python2.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。虽然这是解决我的麻烦的方法,但我仍然不确定这是怎么发生的。如果有人能赐教,那当然还是非常欢迎!