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

ax6ht2ek  于 2022-11-30  发布在  Python
关注(0)|答案(2)|浏览(203)

今天我想在我的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,但这确实让我感到疑惑;这是怎么发生的?2是什么可能清除所有的Python包?
欢迎提供所有提示!
编辑
好的,我刚刚发现,在我使用brew安装的Python之前,python命令不知何故链接回/usr/bin/python,而不是/usr/local/Cellar/python/2.7.13_1/bin/python2,其中所有的包仍然正确安装。
哪个聪明的灵魂能引导我回到使用酿造巨蟒?
编辑2
我刚刚 checkout 了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
谁能把我从这个烂摊子里弄出来?!

wsewodh2

wsewodh21#

好吧,经过大量的混乱,我发现文件夹/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.虽然这是解决我麻烦的办法,但我仍然不知道这是怎么发生的。如果有人能给我启发,当然还是很欢迎的!

bgtovc5b

bgtovc5b2#

在我的例子中,安装的模块似乎消失了,因为macOS安装了一个新的次要版本,并且python3符号链接被更新为指向该新版本。
这可以通过运行以下命令进行检查:ls -laFG /usr/local/bin。如您所见,python3指向v3.11:

...这是未安装任何模块的版本:

但是,通过显式指向版本,我们可以看到所有模块仍然存在:

相关问题