首页 > 解决方案 > 导入包适用于 jupyter notebook 但不适用于 iPython 和 Anaconda cmd

问题描述

在搜索这个问题时,我遇到了一些相反的问题,即包在 iPython 中打开,但在 Jupyter Notebook 中没有。但就我而言,情况恰恰相反。这就是我发布这个问题的原因。

我在环境变量中添加了path\to\anaconda3path\to\anaconda3\Lib\site-packages,但它并没有解决问题。

我可以看到site-packages文件夹中的包: 在此处输入图像描述

但我只是无法在 iPython 中导入一些包: 在此处输入图像描述

或者在 anaconda cmd 中使用 python: 在此处输入图像描述

但它在 Jupyter Notebook 中运行良好: 在此处输入图像描述

我该怎么做/可以做些什么来解决这个问题?

如果有帮助,这里有更多信息:

(base) C:\Users\h473>where python
C:\Users\h473\AppData\Local\Continuum\anaconda3\python.exe

(base) C:\Users\h473>where conda
C:\Users\h473\AppData\Local\Continuum\anaconda3\Library\bin\conda.bat
C:\Users\h473\AppData\Local\Continuum\anaconda3\Scripts\conda.exe

(base) C:\Users\h473>where pip
C:\Users\h473\AppData\Local\Continuum\anaconda3\Scripts\pip.exe

PS:并非所有包都会发生这种情况,只有一些包会发生这种情况,如下面的屏幕截图中的 pandas、numpy 和 matplotlib 所示。

在此处输入图像描述

标签: pythonanacondajupyter-notebookipythonconda

解决方案


当您使用时matplotlib(并且seaborn是在它之上构建的),它需要使用一个所谓的后端,用于在执行后显示带有绘图的实际 GUI,例如matplotlib.pyplot.show()

当您在内联模式下运行带有 matplotlib 的 Jupyter Notebook 时(我认为是默认的,但不确定),然后使用 Jupyter 特定的后端(module://ipykernel.pylab.backend_inline)。这是有道理的,因为绘图不应出现在单独的窗口中,而应显示在笔记本本身内。

但是,当您在交互式 python 或 iPython 会话中时,Qt5 被用作

import matplotlib
print(matplotlib.rcParams["backend"]) # this prints the backend that would be loaded when trying anything with pyplot

透露了。由于您收到错误,因此您的 QT5 安装似乎已损坏。您可以尝试使用 conda 命令重新安装它们,但现在您也可以回退到使用不同的后端,您需要在尝试加载 seaborn 之前指定:

import matplotlib
matplotlib.use("TkAgg")    #use backend TkAgg
import seaborn

您还可以通过在其中创建一个matplotlibrc文件来更改加载到 TkAgg 的默认后端C:\Users\<your name>\.matplotlib\

backend      : TkAgg

在里面。


推荐阅读