jupyter无法import安装在虚拟环境中的包

背景知识

首先需要知道,在Anaconda中创建的虚拟环境是被包含在Anaconda中的(逻辑上),示意图如下。
在这里插入图片描述
这二者有逻辑上的上下级关系,也有文件路径的上下级关系,虚拟环境中内容的路径比Anaconda中内容的路径更底层(具体请看下图二者的sys.path)。所以会涉及到一个问题:软件和包的路径到底是基于虚拟环境还是Anaconda。
当软件路径和包安装的位置不同时会引起很多问题,比如下文提到的这个。

问题描述

如果需要在Anaconda中使用自带的jupyter notebook编写代码,需要注意jupyter的sys.path是基于整个Anaconda的路径。
也就是说,如果需要import的包安装在虚拟环境下,基于Anaconda路径的jupyter是找不到在虚拟环境下的包的,因为虚拟环境的路径更底层。于是jupyter无法直接import,会报ModuleNotFoundError: No module named 'xxx'的错误。
在这种情况下,jupyter import失败,但虚拟环境中的python命令行可以正常import,就是因为python的路径是基于Anaconda的。
python中import正常
jupyter中import失败
查看二者的sys.path,会发现路径不同。
python的sys.path
jupyter的sys.path
这也就是上文提到的问题——jupyter的sys.path是基于整个Anaconda的,而python的sys.path是基于自己建立的虚拟环境的。要解决这个问题只需要让包的路径和jupyter的路径统一即可。

解决方案

如果想要修改jupyter的sys.path,可以尝试StackOverflow中的这些方法,但windows环境下更适合尝试将jupyter连接到虚拟环境
jupyter更改内核后即可正常import虚拟环境中的包:
在这里插入图片描述
正常import

ps:因为只有Linux环境下才有 .bashrc,所以修改 .bashrc文件的方法只有在Linux环境下才可以用(而且根据StackOverflow里的提问者的说法,不知道到底有没有用)。

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值