导入程序包在jupyter笔记本中有效,但在iPython和Anaconda cmd中不起作用

时间:2018-10-10 07:56:27

标签: python anaconda jupyter-notebook ipython conda

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

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

我可以在site-packages文件夹中看到这些软件包: enter image description here

但是我只是不能导入iPython中的某些软件包: enter image description here

或在anaconda cmd中使用python: enter image description here

但是在Jupyter Notebook中它可以正常工作: enter image description here

该如何解决?

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

(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

P.S。:并非所有软件包都发生这种情况,只有部分软件包会发生,如下面的屏幕快照中的pandas,numpy和matplotlib所示。

enter image description here

1 个答案:

答案 0 :(得分:2)

当您使用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

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

backend      : TkAgg

在其中。