Homebrew 升级后的 Jupyter Notebook ModuleError

KsE*_*uro 4 python macos homebrew package jupyter-notebook

我已经使用 Jupyter 有一段时间了,它工作得很好。我通过 Homebrew 安装了 Jupyter 和 Python。我在 MacOS 上运行。

昨天,我运行了命令brew upgrade,现在我的 Jupyter notebook 无法找到任何已安装的 python 包。我将使用 Numpy 作为示例。

当在 Jupyter 笔记本中时,我尝试做

import numpy
Run Code Online (Sandbox Code Playgroud)

我收到消息:

ModuleNotFoundError: No module named 'numpy'
Run Code Online (Sandbox Code Playgroud)

但是,如果我在终端窗口中启动 python,那么我可以毫无问题地导入 Numpy。

我首先通过重新发出安装命令来检查包是否安装正确

brew install numpy

输出:

Warning: numpy 1.18.4 is already installed and up-to-date
To reinstall 1.18.4, run `brew reinstall numpy` 
Run Code Online (Sandbox Code Playgroud)

我也跑了

pip install numpy

并得到:

Requirement already satisfied: numpy in /usr/local/lib/python3.7/site-packages (1.18.4)
Run Code Online (Sandbox Code Playgroud)

现在,这是我感到困惑的地方,因为我希望路径指向类似/usr/local/Cellar/,所以我检查了 Jupyter 笔记本内部的路径:

import sys
sys.path
Run Code Online (Sandbox Code Playgroud)

输出:

['/Users/kseuro/Dropbox/Dev/',
 '/usr/local/Cellar/jupyterlab/2.1.2/libexec/lib/python38.zip',
 '/usr/local/Cellar/jupyterlab/2.1.2/libexec/lib/python3.8',
 '/usr/local/Cellar/jupyterlab/2.1.2/libexec/lib/python3.8/lib-dynload',
 '/usr/local/opt/python@3.8/Frameworks/Python.framework/Versions/3.8/lib/python3.8',
 '',
 '/usr/local/Cellar/jupyterlab/2.1.2/libexec/lib/python3.8/site-packages',
 '/usr/local/Cellar/jupyterlab/2.1.2/libexec/lib/python3.8/site-packages/IPython/extensions',
 '/Users/kseuro/.ipython']
Run Code Online (Sandbox Code Playgroud)

好吧,Homebrew 想让 Jupyter 使用 Python3.8?所以我尝试brew switch python 3.8并得到:

Error: python does not have a version "3.8" in the Cellar.
python's installed versions: 3.7.7
Run Code Online (Sandbox Code Playgroud)

我觉得我现在超出了我的深度,需要帮助弄清楚下一步该怎么做。我不想从改变路径开始。

建议?非常感谢。

KsE*_*uro 9

我想出了该怎么做——为我未来的自己和其他可能偶然发现的人发布解决方案。

由于 Jupyerlab 在它自己的 Cellar 中,Python 包需要在

/usr/local/Cellar/jupyterlab/x.y.z/libexec/lib/python3.x/site-packages

目录,其中x, y, z是整数,以便 Jupyter 内核可以找到它们。

您可以通过调用:

import sys
!{sys.executable} -m pip install 'package-name'
Run Code Online (Sandbox Code Playgroud)

Jupyer 笔记本内部。

一切都很好,再次。