Jupyter Notebook如何调用指定的虚拟环境

本文介绍了在Jupyter Notebook遇到kernel错误时,如何确保Notebook使用指定的Anaconda虚拟环境。问题源于Notebook运行在默认环境中而非目标环境。解决方法包括查询和添加虚拟环境为Jupyter的Kernel,通过修改配置文件并重启Notebook,使得Notebook成功调用了所需的Python环境和库。此外,还提到了可能出现的tab扩展失效问题及其解决方案。
部署运行你感兴趣的模型镜像

1 问题由来

不久前,jupyter notebook运行时出现了kernel error的问题,于是上网搜索方法,发现运行如下命令能够解决问题:

python -m ipykernel install --user

本人Anaconda中自行配置了一个名为data的虚拟环境,并在此环境中安装了诸多专门的用于数据处理的package。

问题来了:

  • 某天突然发现,虽然是从指定虚拟环境进入Notebook,但依旧无法使用data中的库。
  • 然而,退出来运行命令conda list查询,可以发现所有想要的包就好好地躺在里面。

2 发现原因

知识点:虽然Jupyter Notebook是在data的虚拟环境中启动的(Mac启动命令为source activate environment_name)。但是它居然还可能是运行的默认环境,而不是你指定的虚拟环境,这就是问题所在。

出现这种问题的原因,可能就是前面命令行将设置给初始化了之类的(仅猜测)。

运行如下代码可以查询目前的Notebook究竟运行的是哪一个虚拟环境:

import os, sys
print(sys.executable) # works this time
print(sys.version)
print(sys.version_info)

输出结果如下:

>>> /Users/yj/opt/anaconda3/bin/python
>>> 3.7.4 (default, Aug 13 2019, 15:17:50) 
[Clang 4.0.1 (tags/RELEASE_401/final)]
>>> sys.version_info(major=3, minor=7, micro=4, releaselevel='final', serial=0)

此时显示的是Anaconda的默认虚拟环境,不是我想要的。

2 解决方法

通过如下命令可以查询你计算机安装的所有虚拟环境:

conda env list

>>> # conda environments:
>>> #
>>> base                  *  /Users/yj/opt/anaconda3
>>> data                     /Users/yj/opt/anaconda3/envs/data

这里我想要的是data这个环境。接下来要做的就是将这个环境加入到Jupyter Notebook的Kernel中。代码及说明如下:

# 第一步,切换到想要添加的虚拟环境:
conda activate data

# 第二步,安装ipykernel包
conda install ipykernel

# 第三部,执行如下命令,并确定环境的名称(此处设置为data)
python -m ipykernel install --name data

务必注意第1步必不可少。重启Notebook,可以看到已经有新的环境可以选择:
已有新环境可以选择

重新查询运行环境,发现已经更改为自己想要的虚拟环境,终于又重新可以调用要用的包了。

>>> /Users/yj/opt/anaconda3/envs/data/bin/python
>>> 3.7.5 (default, Oct 25 2019, 10:52:18) 
[Clang 4.0.1 (tags/RELEASE_401/final)]
>>> sys.version_info(major=3, minor=7, micro=5, releaselevel='final', serial=0)

注意第一行多了个data,第二行python版本也不一样了。

3 补充

3.1 异常处理

执行python -m ipykernel install --name data后,出现[Errno 13] Permission denied: '/usr/local/share',则可以将名利修改为:

python -m ipykernel install --user --name data

显示成功,撒花庆祝
在这里插入图片描述

3.2 Notebook的tab扩展失效

安装了ipykernel包之后,有的小伙伴会出现tab键失效的问题,这里是因为jedi这个包在作怪,把它干掉就好了

pip uninstall jedi --yes

Done!

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jame__

人海茫茫,感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值