当前位置:   article > 正文

【环境配置】Jupyter Notebook配置多个kernel内核(基于conda)_jupyter notebook怎么设置conda虚拟环境

jupyter notebook怎么设置conda虚拟环境

方案精简代码

首先激活子环境后安装ipykernel

pip install ipykernel
  • 1

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

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

0、Jupyter notebook

配置默认路径

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

conda install ipython jupyter
  • 1

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

jupyter notebook --generate-config
  • 1

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

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

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

添加子环境kernel

首先激活子环境后安装ipykernel

pip install ipykernel
  • 1

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

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

允许jupyter外部链接

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

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

一、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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

目前大家普遍认为导致这个的原因是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
  • 1
pip install ipykernel
  • 1

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

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

在cmd中键入ipython kernelspec list:

C:\Users\goatbishop>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      F:\software\Anaconda\lib\site-packages\ipykernel\resources
  julia-1.1    C:\Users\goatbishop\AppData\Roaming\jupyter\kernels\julia-1.1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

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

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

参考资料如下:
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
  • 1
jupyter kernelspec remove kernelname
  • 1

四、注意:2021.7.30 最新方法

目前,当我们在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 &
  • 1

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
  • 1

或者

netstat -an | grep ':8888'
  • 1

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

lsof -i
  • 1

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

sudo yum install net-tools
  • 1

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

kill -9 13807
  • 1

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

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

这个指令是在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 &
  • 1

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

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

解决方案一

1.安装iptables-services

yum install iptables-services
  • 1

2. 启动iptables

systemctl enable iptables
systemctl start iptables
  • 1
  • 2

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

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
  • 1
  • 2

启动: 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的默认路径

https://so.csdn.net/so/search?q=%E4%BF%AE%E6%94%B9jupyterlab%E9%BB%98%E8%AE%A4%E7%9B%AE%E5%BD%95&t=&u=&utm_term=%E4%BF%AE%E6%94%B9jupyter%20notebook%E8%B7%AF%E5%BE%84&utm_medium=distribute.pc_toolbar_associateword.none-task-associate_word-opensearch_query-1-%3Cem%3E%E4%BF%AE%E6%94%B9jupyter%3C%2Fem%3E%20notebook%E8%B7%AF%E5%BE%84.nonecase&depth_1-utm_source=distribute.pc_toolbar_associateword.none-task-associate_word-opensearch_query-1-%3Cem%3E%E4%BF%AE%E6%94%B9jupyter%3C%2Fem%3E%20notebook%E8%B7%AF%E5%BE%84.nonecase&request_id=164298873716781685311215&opensearch_request_id=164298873716781685311215

八、jupyter notebook基本使用方法

查看包或者方法的内容

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/149926
推荐阅读
相关标签
  

闽ICP备14008679号