Python Jupyter notebook不反映虚拟环境中的库版本更改

Python Jupyter notebook不反映虚拟环境中的库版本更改,python,matplotlib,jupyter-notebook,virtualenv,Python,Matplotlib,Jupyter Notebook,Virtualenv,我不熟悉jupyter笔记本和虚拟环境。我想我遇到了一个非常琐碎的问题 我正试图在Jupyter笔记本中导入matplotlib,导入工作正常。但是,它使用了错误版本的库(在系统范围内也安装了),我不知道如何强制它在virtualenvironment中使用这个版本 在我的虚拟环境中,我想使用matplotlib的最新版本,因此我做到了 pip安装--在我的虚拟环境中升级matplotlib。升级工作正常。 现在,如果我在虚拟环境中执行pip show matplotlib,我会得到: Name

我不熟悉jupyter笔记本和虚拟环境。我想我遇到了一个非常琐碎的问题

我正试图在Jupyter笔记本中导入matplotlib,导入工作正常。但是,它使用了错误版本的库(在系统范围内也安装了),我不知道如何强制它在virtualenvironment中使用这个版本

在我的虚拟环境中,我想使用matplotlib的最新版本,因此我做到了
pip安装--在我的虚拟环境中升级matplotlib
。升级工作正常。 现在,如果我在虚拟环境中执行
pip show matplotlib
,我会得到:

Name: matplotlib
Version: 2.2.5
...
相反,如果我在家里执行相同的命令,我会得到:

Name: matplotlib
Version: 1.5.1
然而,如果在我的jupyter笔记本中,我会

import matplotlib
print ("matplotlib version:",matplotlib.__version__)
我得到:

('matplotlib version:', '1.5.1')

你能帮我理解我做错了什么吗?

我找到了解决问题的办法。首先,我读到我建议大家使用
conda
pip

然后我了解到shell环境是在Jupyter笔记本启动时确定的,而Python可执行文件是由内核确定的,两者不一定匹配

我通过在我的jupyter笔记本的开头放上以下内容来理解这一点:

paths = !type -a python
for path in set(paths):
    path = path.split()[-1]
    print(path)
    !{path} -c "import sys; print(sys.path)"
    print()

!type python

import sys
sys.executable

!pip show matplotlib
它告诉我,我仍然在使用较旧版本的
matplotlib

因此我补充说

!{sys.executable} -m pip install --upgrade matplotlib
重新启动我的jupyter内核,这解决了我的问题

我希望这个解决方案能帮助其他处于同样情况的人