jupyter Notebook切换虚拟conda环境Kernel
方案精简代码
首先激活子环境后安装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)
- 激活conda子环境
- 为conda子环境安装ipython和ipykernel
pip install ipython ipykernel
- 添加该子环境为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 “此处输入名字”
- 删除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的默认路径
八、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