【环境配置】Jupyter Notebook配置多个kernel内核(基于conda)

方案精简代码

首先激活子环境后安装ipykernel

pip install ipykernel

该代码会默认安装ipython
然后添加核,注意不要直接点击复制后复制到命令行中,会自带回车,手动选择到name部分,后面自己输入

python -m ipykernel install --user --name “此处给你的核起一个名字”

0、Jupyter notebook

配置默认路径

安装好anaconda之后,默认就安装了Jupyter notebook。
如果安装的是miniconda,则通过下面命令进行安装jupyter。

conda install ipython jupyter

此时运行下列代码生成配置文件

jupyter notebook --generate-config

然后到c盘系统里找到系统文件,并用vscode(其他编辑器)也可以,对文件进行打开。
找到下面这两行配置分别设置默认文件路径和端口号。

c.NotebookApp.notebook_dir = 'E:\\codespace' 
c.NotebookApp.prot = 9999

注意这里的路径需要加双\,进行一个转意

添加子环境kernel

首先激活子环境后安装ipykernel

pip install ipykernel

该代码会默认安装ipython
然后添加核

python -m ipykernel install --user --name “此处给你的核起一个名字”

允许jupyter外部链接

默认情况下,Jupyter Notebook仅接受来自localhost的连接(例如,来自运行它的同一台计算机).通过将NotebookApp.allow_origin选项从默认的’‘修改为’*',您可以在外部访问Jupyter.

c.NotebookApp.ip = '*' #允许任何ip访问
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #可自行指定一个端口, 访问时使用该端口

注意7.0新的版本之后的上述配置有差异,参考下方链接
https://zhuanlan.zhihu.com/p/671253760
vim ~/.jupyter/jupyter_notebook_config.py

【新】
c.ServerApp.ip = '0.0.0.0' #允许所有ip访问,这个貌似没有,就自己复制一行写上
c.ServerApp.password = ''
c.ServerApp.open_browser = False #939行,现在默认就是False
c.ServerApp.port = 8888  #若端口被占用可以视情况改(一般不用) 951 line
c.ServerApp.allow_remote_access = True# 在配置文件652行附近
c.ServerApp.allow_root = True #在配置文件656行
​
【旧】
c.NotebookApp.ip = '0.0.0.0' 
c.NotebookApp.password = ''
c.NotebookApp.open_browser = False
c.NotebookApp.port = 8888
c.NotebookApp.allow_remote_access = True

一、jupyter notebook常见报错

anaconda自带的jupyter notebook的基本kernel就是base那个kernel

  • python 3.8启动jupyter notebook并运行代码时会出现下面这样一个问题
TypeError   Traceback (most recent call last) /usr/lib/python3.8/codeop.py in __call__(self, source, filename, symbol)
   135     def __call__(self, source, filename, symbol):
   136         codeob = compile(source, filename, symbol, self.flags, 1)
   137         for feature in _features:
   138             if codeob.co_flags & feature.compiler_flag:
TypeError: required field "type_ignores" missing from Module

目前大家普遍认为导致这个的原因是python3.8与某些包的兼容问题,stackoverflow.com中给出了解决方案,地址如下https://stackoverflow.com/questions/63519761/python-typeerror-required-field-type-ignores-missing-from-module-in-jupyter
其中,最通用的方法就是在conda 所在的base环境中,直接升级ipython,直接可以解决问题,注意了,一定要是base中的ipython,即使base中的python版本是3.8这个问题一样可以解决。

KernelRestarter: restart failed

解决方案,重新卸载和安装ipykernel即可

pip uninstall ipykernel
pip install ipykernel

二、如何将conda中不同的子环境映射为jupyter notebook 中可用的kernel

1.查看JupyterNotebook的已有的kernel及存放位置

在cmd中键入jupyter kernelspec list

C:\Users\goatbishop>jupyter 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      F:\software\Anaconda\lib\site-packages\ipykernel\resources
  julia-1.1    C:\Users\goatbishop\AppData\Roaming\jupyter\kernels\julia-1.1

2.创建用于切换的虚拟conda环境(Kernel)

  1. 激活conda子环境
  2. 为conda子环境安装ipython和ipykernel
pip install ipython ipykernel
  1. 添加该子环境为kernel内核
python -m ipykernel install --user --name other-env --display-name "Python (other-env)"

其中:内部jupyter使用–name值,这些命令将覆盖具有相同名称的任何现有内核。 --display-name是您在jupyter notebook菜单中所看到的。方便起见,只写–name这一个就行,–display-name默认和–name相同
即:

python -m ipykernel install --user --name “此处输入名字”


  1. 删除kernel

参考资料如下:
conda建立python2和python3两个内核
https://blog.csdn.net/weixin_42136477/article/details/112363924?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242

3. linux/mac 中notebook创建用于切换的虚拟conda环境(kernel)

[Errno 13] Permission denied:’/usr/local/share/jupyter’
linux/mac 添加kernel与windows添加kernel的区别示范

三、如何删除无用的kernel

如何删除无用的kernel
查看有哪些内核

jupyter kernelspec list
jupyter kernelspec remove kernelname

四、注意:2021.7.30 kernel注册最新方法

目前,当我们在conda子环境中安装最新版的ipykernel的时候即,首先激活我们的子环境:
conda activate 子环境名称
conda install ipykernel #此时,会自动将kernel加入jupyter notebook同时,安装配套的其他包

五、linux后台运行jupyter:使用nohup命令

5.1 简介:nohup和&后台运行,进程查看及终止

1.nohup

用途:不挂断地运行命令。

语法:nohup Command [ Arg … ] [ & ]

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。

如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。

退出状态:该命令返回下列出口值:   
  126 可以查找但不能调用 Command 参数指定的命令。   
  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。   
  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。

2.&

用途:在后台运行

一般两个一起用

nohup command &

eg:
nohup /usr/local/node/bin/node /www/im/chat.js >> /usr/local/node/output.log 2>&1 &

进程号7585

查看运行的后台进程

(1)jobs -l

jobs命令只看当前终端生效的,关闭终端后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps(进程查看命令)

(2)ps -ef

a:显示所有程序
u:以用户为主的格式来显示
x:显示所有程序,不以终端机来区分
ps -aux|grep chat.js

(3) netstat -nap | grep 8888

netstat -nap | grep 8888

或者

netstat -an | grep ':8888'

终极方法
使用-i 显示所有连接

lsof -i

在这里插入图片描述
如果提示没有netstat命令 则安装一下:

sudo yum install net-tools

然后根据上买呢的进程好关闭即可:

kill -9 13807

(4)ps -aux | grep jupyter

上述命令的第二列即为pid
然后kill -9 pid

5.2 nohup文件会累积不断增大,需要重定向

nohup jupyter notebook --allow-root > jupyter.log 2>&1 &
或者
nohup jupyter notebook > jupyter.log 2>&1 &

这个指令是在Linux系统中运行Jupyter Notebook并将其输出重定向到一个名为jupyter.log的文件中。下面是对指令的解释:
nohup:这是一个命令,用于在后台运行指定的命令,并忽略终端断开连接的信号。这样可以使Jupyter Notebook在你退出终端后继续运行。
jupyter notebook:这是运行Jupyter Notebook的命令。
–allow-root:这个选项允许以root用户身份运行Jupyter Notebook,因为默认情况下它不能以root权限运行。
:这是一个重定向操作符,将命令的标准输出重定向到一个文件中。
jupyter.log:这是将标准输出重定向到的文件名。
2>&1:这个操作符将标准错误重定向到与标准输出相同的地方,也就是jupyter.log文件。这样,除了标准输出外,任何错误或警告消息也会被记录下来。
&:这个操作符使指定的命令在后台运行。
综上所述,这个指令的作用是以root用户身份在后台运行Jupyter Notebook,并将其输出和错误消息记录到一个名为jupyter.log的文件中。

如果大家项目有自己的log,那么这个启动日志就不需要关注。

使用nohup 命令 > /dev/null 2>&1 &

六 linux关闭防火墙, 用于访问linux服务器

常见问题:Unit iptables.service could not be found.(防火墙问题)

解决方案一

1.安装iptables-services

yum install iptables-services

2. 启动iptables

systemctl enable iptables
systemctl start iptables

现在执行查看防火墙状态,停止,启动就行了

3.查看防火墙状态:

service iptables status

4.关闭防火墙:

service iptables stop

5.打开防火墙:

service iptables start

解决方案二:firewalld 方式

安装firewalld
注意安装的系统命令:
使用yum报错:There are no enabled repos. Run “yum repolist all“ to see the repos you have.
在这里插入图片描述

#ubuntu
apt-get install firewalld

启动: systemctl start firewalld
查看状态: systemctl status firewalld
禁用,禁止开机启动: systemctl disable firewalld
停止运行: systemctl stop firewalld
重启:firewall-cmd --reload

3. firewall直接开启具体的某个端口(好用,方便,不用每次重启电脑都做一遍)

linux中开放某个端口
参考 :https://blog.csdn.net/cs4380/article/details/86597127

添加端口 sudo firewall-cmd --zone=public --add-port=xxxx/tcp --permanent
(其中xxxx代表端口号)
刷新生效 sudo firewall-cmd --reload

七 修改jupyter的默认路径

http://t.csdnimg.cn/rtGLL

八、jupyter notebook基本使用方法

查看包或者方法的内容

在这里插入图片描述
在这里插入图片描述

九、配置登陆密码

如何设置Jupyter 登录密码

1,生成jupyter的配置文件:jupyter notebook --generate-config
2,控制台继续输入:jupyter notebook password (会输入两次密码,用来验证)
3,密码设置成功后,需要重启jupyter然后即可输入密码登陆

十、常见jupyter内部报错

textTqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from .autonotebook import tqdm as notebook_tqdm

要解决上述问题,安装下面的工具包即可。

pip install ipywidgets
### 配置Anaconda中的Jupyter Notebook环境 为了确保能够在Anaconda环境中顺利使用Jupyter Notebook并解决可能遇到的问题,以下是详细的配置方法。 #### 创建和激活Conda虚拟环境 创建一个新的Conda环境可以有效防止不同项目之间的依赖冲突。通过命令`conda create --name myenv python=3.x`来创建名为myenv的新环境,并指定Python版本[^2]。接着,在Anaconda Prompt中输入`activate myenv`(Windows) 或 `source activate myenv`(macOS/Linux),以激活该环境。 #### 安装Jupyter Notebook到特定环境 一旦进入所需的Conda环境之后,可以通过执行`conda install jupyter`或`pip install jupyter`来进行Jupyter Notebook的安装操作[^1]。这一步骤会将Jupyter Notebook及其所有必要的组件下载至当前活动的Conda环境中。 #### 将新环境注册给Jupyter Kernel 为了让Jupyter识别新的Conda环境作为内核选项之一,需先安装ipykernel(`conda install ipykernel`),随后运行如下指令完成注册过程: ```bash python -m ipykernel install --user --name=myenv --display-name "Python (myenv)" ``` 上述命令将会把名为`myenv`的Conda环境添加为可用Kernel列表里的一个条目,显示名称自定义为"Python(myenv)"[^3]。 #### 启动Jupyter Notebook/Lab服务 最后,在已激活的目标环境下启动Jupyter的服务端程序即可正常使用关联于各独立环境下的库文件与工具集了。对于大多数情况而言,只需简单地键入`jupyter notebook`或是更现代化界面支持的`jupyter lab`就能实现在浏览器里访问对应实例的目的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值