在使用jupyter notebook的过程中,创建了一个新的环境(anaconda中env)后遇到了这样一个问题,就是:

在jupyter notebook上运行程序,中间发现有一个python库未曾下载,因此,我们调出了cmd 命令窗口,把我们需要的python通过pip的形式下载完成,并且在cmd命令窗口上已经实测“已经下载安装成功”,但是jupyter notebook中仍然显示没有下载该模块。

对于该问题,我们通过以下命令查看import是直接从哪个路径中导入python库的

import sys
print(sys.path) # 输出的是一个列表

我们发现输出结果中没有我们创建的新环境的路径,比如:我们创建的环境为XXX,则在下载的Python库一般在anaconda3\env\XXX\lib\site-package,也可以pip install xyz导入一下你要下载的python库,看看它下载到哪了。

因此我们要做的就是把这个路径加入到sys.path中,也就是sys.path.append("anaconda3\env\XXX\lib\site-package")

++++++++++++++++++++++手动分割线+++++++++

上述提供的方法有一个缺点,就是:

对于每次终端下启动的jupyter notebook,我们都需进行上述操作来解决我们的问题,不存在永久解决的,因此,我们希望能有一个永久解决的办法。

分别在电脑终端和jupyter notebook中、不同的anaconda环境下执行下述操作(假设我们有两个anaconda环境,分别为env1和env2)

import sys
sys.executable

我们发现,

在终端下的运行结果,分别是D:\\anaconda3\\envs\\env1\\python.exeD:\\anaconda3\\envs\\env2\\python.exe

在jupyter notebook中的运行结果都是D:\\anaconda3\\envs\\env1\\python.exe

所以,可能是由于sys.executable的问题,使得在env2环境下激活的jupyter notebook中无法导入该环境下通过pip或者conda下载的python库

在终端中直接执行ipython kernelspec list,输出结果为

[TerminalIPythonApp] WARNING | Subcommand `ipython kernelspec` is deprecated and will be removed in future versions.
[TerminalIPythonApp] WARNING | You likely want to use `jupyter kernelspec` in the future
Available kernels:
python3 C:\Users\jluaa\AppData\Roaming\jupyter\kernels\python3

我们打开输出所示的路径的文件,文件内容为:

{
"argv": [
"D:\\anaconda3\\envs\\env1\\python.exe",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3",
"language": "python"
}

把其中的D:\\anaconda3\\envs\\env1\\python.exe改成D:\\anaconda3\\envs\\env2\\python.exe

那么上面的所说的问题就能完美解决了

################继续分割#############################

用了多日的jupyter notebook,今天突然发现自己陷入了一个误区,就是我们在学习python的时候用的是anaconda,当我们要用python处理不同种类的问题时,显然安装多个版本的anaconda会显得很麻烦,因此,在这里,我们可以通过anaconda的虚拟环境来解决的不同的问题(提一下,就是通过conda create -n env_name python=3.6来创建自己所需的虚拟环境,python版本可以根据所需要配置的python库来确定),那么,对于交互式编程,jupyter notebook必不可少,但是我们jupyter notebook 插件是该安装在什么地方呢?

不知道别人有没有存在这样的理解误区,本人一直把jupyter notebook当作是每个anaconda虚拟环境下必备的插件,也就是说,如果我们要使用该环境下的python库,就必须通过conda activate env_name切换到该虚拟环境下,之后通过jupyter notebook打开交互式页面,进行编程,这或许就会出现上述本文中最初的那个问题(在本环境下打开的jupyter notebook,为何sys.executable显示的确实另一个虚拟环境的路径呢?),而且我们创建了那么多虚拟环境,为什么jupyter notebook界面上的运行内核一直是python3(本人安装的anaconda3)呢?即使我们在虚拟环境env_name中安装的是python=2.7,jupyter notebook的运行内核依旧是python3呢?

所以,jupyter notebook是我们安装的anaconda对应的插件,其内核也就是anaconda所对应的python版本,而对于在anaconda这个大的环境下创建的虚拟环境以及在这个环境下启动的jupyter notebook都是anaconda对应的最原始的那个。如果我们要想在jupyter notebook中切换各个虚拟环境的版本,不需要像前面所说的那样,必须在对应的虚拟换下启动jupyter notebook,我们只需要安装一个插件,就可以直接在jupyter notebook中切换各个运行环境。

插件安装如下:

在终端中输入下面命令,

conda install nb_conda

之后启动jupyter notebook

此时,jupyter notebook主页中的新建选项为



我们就可以在我们已经创建的虚拟环境下创建新文件(图中所示,为jupyter notebook主页右上角新建选项中的子选项,由于图片看不清,俺也解决不了,等解决了在换清晰图像吧!)

如果我们打开已经编辑好的文件,希望通过特定的虚拟环境运行,可以按照如下方式



内容为:打开ipynb文件后,菜单栏中的服务->改变服务->我们要的虚拟环境

这就很完美!

通过这样直接切换虚拟环境的方式,本文章最初的那个问题也就迎刃而解了

“jupyter notebook 不能导入python库但是终端上可以实现”的问题的解决的更多相关文章

  1. win10下 Jupyter Notebook不运行python 3怎么办?

    Jupyter Notebook不运行python 3怎么办? 内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用 我已经安装了Python 2的Anaco ...

  2. Anaconda下的 Jupyter Notebook 安装 多python环境

    装完 Anaconda 会自带一个pyhon环境   也会自带Jupyter Notebook   可以点击开始中的Jupyter Notebook 打开 浏览器 我这里是 3.x 想要装个2.7 的 ...

  3. 机器学习(三) Jupyter Notebook, numpy和matplotlib的详细使用 (上)

    工欲善其事,必先利其器.在本章,我们将学习和机器学习相关的基础工具的使用:Jupyter Notebook, numpy和matplotlib.大多数教程在讲解机器学习的时候,大量使用这些工具,却不对 ...

  4. 导入python库失败时的方法

    出现以下错误如何解决: e.g. cmd:   pip install Django -i  http://mirrors.aliyun.com/pypi/simple/ --trusted-host ...

  5. 对于pod导入第三方库文件终端语言记录

    //换成 pod install --verbose --no-repo-update //生成Podfile文件 touch Podfile 加上--verbose --no-repo-update ...

  6. jupyter notebook中导入其他ipynb文件中的代码

    %%capture %run "../Untitled Folder 3/2nn.ipynb" %%capture 抑制输出%run "../Untitled Folde ...

  7. Python神器 Jupyter Notebook

    什么是Jupyter Notebook? 简介 Jupyter Notebook是基于网页的用于交互计算的应用程序.其可被应用于全过程计算:开发.文档编写.运行代码和展示结果. Jupyter Not ...

  8. Python - 搭建Jupyter notebook环境

    1- Jupyter简介 HomePage:https://jupyter.org/ 安装指南:https://jupyter.org/install.html 官方文档:https://jupyte ...

  9. Python·Jupyter Notebook各种使用方法

    PythonJupyter Notebook各种使用方法记录持续更新 一 Jupyter NoteBook的安装 1 新版本Anaconda自带Jupyter 2 老版本Anacodna需自己安装Ju ...

  10. Python·Jupyter Notebook各种使用方法记录

    标签(空格分隔): Python 一 Jupyter NoteBook的安装 1 新版本Anaconda自带Jupyter 2 老版本Anacodna需自己安装Jupyter 二 更改Jupyter ...

随机推荐

  1. java轻量级锁、重量级锁、可重入锁、偏向锁、自旋锁的概念

    1.重量级锁 作为互斥同步的方式,是最基础的锁,其他的锁都是为了减少开销做的优化,重量级锁借助了monitor 对象,monitor对象中有三个区域,分别是entity site. owner和wai ...

  2. rust 配置国内源,加速

    [source.crates-io] registry = "https://github.com/rust-lang/crates.io-index" # 指定镜像 replac ...

  3. QE11 / QE51N 界面太小问题

    修复后界面是,修复前常规页签中的数据只能显示4行,需要的note是 2639352 , SNOTE 进行打补丁就好  note是 2639352

  4. 在windows上搭建spark遇到的问题

    报错如下: The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: --------- ...

  5. 分布式事务seata

    1.事务的4大基本特征.   1)原子性   2)一致性   3)隔离性   4)持久性 2.什么是分布式事务? 本地事务:单服务进程,单数据库资源,同一个连接conn多个事务操作. 分布式事务:多服 ...

  6. Redis后端面试题

    目录 简要说一下什么是Redis? 为什么要⽤Redis(缓存)? 为什么要⽤Redis⽽不⽤map/guava做缓存? Redis与Memcached的区别 Redis的应⽤场景 redis为什么那 ...

  7. Error: (1061, "Duplicate key name 'makerphoto_user_info_email_380c93a0_uniq'")

    django.db.utils.OperationalError: (1061, "Duplicate key name 'makerphoto_user_info_email_380c93 ...

  8. unity GetComponent在android端获取对象错误

    PlayerObj pobj = go.GetComponent<PlayerObj>(); if (pobj && pobj.IsMyTeam()) { marchAct ...

  9. 使用@RequestBody注解接收的实体类中的某些参数为null

    原因 postman调试接口 为null的参数命名不符合"驼峰法",类似实体类A的属性 cEnterpriseId ,这种命名是不规范的 和lombook的@Data注解有关 用p ...

  10. java基于ssm开发的宠物商城宠物店源码

    简介 关于宠物的商店,首页,搜索商品,详情页,可选择尺寸,衣服颜色,根据不同规格显示不同的商品价格,加入购物车,立即购买,评价列表展示,商品详情展示,商品评分,分类商品,标签查询,更多分类查询 演示视 ...