问题描述
在Pycharm
中编辑.ipynb
文件时,发现新安装的包在文件中引入时总是显示找不到。
在Pycharm
中查看我当前虚拟环境安装的包发现是有seaborn
这个包的:
此时我在Pycharm
中创了个.py
文件来做对照,结果发现导入成功了:
排查问题
现在情况是这样:下载的包只在jupyter中导入失败,在python file中可以成功导入,那么可以初步判断不是当前解释器的问题。
接着我以为对于新安装的包,jupyter的kernel没有更新,这也可能会导致引入失败,所以尝试restart kernel,试了好几次还是不行。
那么应该就不是kernel没更新的问题了,于是在网上搜了一下,发现有类似的情况。
相关问题链接: jupyter无法导入已安装的包?原因竟是它!
他的解决方法对我并没有起作用。但是他提醒了我一点:
jupyter kernelspec list
在Anaconda Prompt
中使用这个命令可以查看当前环境的jupyter kernel地址。
一查就发现问题所在了,我用的jupyter kernel不是我在Pycharm
中使用的虚拟环境中的。
我在网上搜了一些问题,发现网上说可以从红框的位置修改kernel,但是我这里不知道为什么不行。
我现在使用的环境名为itdk-as
,但是在之前某次写课程实验的时候把anconda的默认激活环境修改成了py39
。这就是问题所在!!!
经过测试发现,就是因为我设置了anaconda默认激活py39
这个环境,导致我在Pycharm
中使用jupyter时它直接默认使用py39
的kernel.所以现在就只需要修改默认激活环境即可。
如何修改Anaconda默认激活环境(Windows下)
找到Anaconda
的安装路径,切换到/Anaconda/Scripts/
目录,找到activate.bat
文件。
这一行代码的功能就是在anconda启动的时候默认激活py39
这个环境。
所以现在改成我要使用的itdk-as
即可。
保存修改后,当再次启动Anaconda
时,就会默认激活itdk-as
这个环境。
问题解决
按照上面修改完Anaconda
的默认激活环境后。重启Pycharm
,再次运行.ipynb
文件:
大功告成!!!
说明:红框中kernel名字变了,这是我在/Anaconda/envs/环境名/share/jupyter/kernels/python3/
文件夹下的kernel.json
文件中修改了kernel的名字。