chaoz的杂货铺

生命有息、学无止境、折腾不止

0%

python-jupyter-使用总结

在 centos 下配置 jupyter

配置文档

jupyter notebook –generate-config 生成默认配置文档

修改密码:

1. windows下,打开命令行,重新生成一个jupyter配置文件:

jupyter notebook --generate-config
 
2. 修个配置文件,找到这个新生成的文件:

1
2
3
4
5
6
7
8
9
10
11
12
Windows: 

C:\Users\USERNAME\.jupyter\jupyter_notebook_config.py

linux :
vim /root/.jupyter/jupyter_notebook_config.py

搜索 NotebookApp.allow_password_change,改为:

NotebookApp.allow_password_change=False ,记得去掉注释的#

也不要搜索了,麻烦,直接再第一行加

3. 回到命令行,运行jupyter notebook password

1
2
3
4
notebook password
Enter password: #键入密码,不显示的
Verify password: #再次重复键入密码
[NotebookPasswordApp] Wrote hashed password to C:\Users\用户\.jupyter\jupyter_notebook_config.json #密码生成的一串sha1,写入到了这个文件,等下要把这串sha1,复制到第一个生成的配置文件中

4. 还差一步密码才可以生效使用,在第一个jupyter_notebook_config.py配置文件中找到
“c.NotebookApp.password“,等于,刚生成的那个密码sha1,效果如下:去掉前面的”#“

c.NotebookApp.password = u'sha1:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

5. 保险起见,把jupyter重启,之后,无论是更换浏览器还是Logout登陆,新密码都可以正常使用了。

访问是https

1
2
3
问题:Jupyter notebook 远程server打开时遇到 socket.gaierror: [Errno -2] Name or service not known

这个问题主要是由于远程打开的时候,并没有allow_remote_access=True

反向代理设置问题

修改(直接在前几行添加):

1
c.NotebookApp.ip='*' # 允许所有ip访问

踩坑: 设置了反向代理,访问什么的没问题,但是链接不到解释服务器,打不开终端,各种修改无果!修改允许所有IP访问,然后设置301重定向,近似完美解决。

修改Jupyter工作目录

c.NotebookApp.notebook_dir = '想设置哪个就是哪个'

启动命令:

1
jupyter notebook --config /root/.jupyter/jupyter_notebook_config.py --allow-root

启动以后,还可以给Python环境安装包之类。如果希望Jupyter长久运行,可以使用nohup后台运行。

杀死占用端口程序进程

根据端口查看这个进程的pid
netstat -lnp|grep 8080 #8080请换为你的apache需要的端口
查看进程的详细信息
ps 1777 #1777就是上一步得到的pid
杀掉进程
例如: kill -9 [PID] #-9 表示强迫进程立即停止

参考地址

修改jupyter的权限

当我们用命令行在浏览器中启动jupyter notebook后需要点击右上角的New创建新的python文件,此时会报错。在Linux下可以用命令行解决这个问题。首先需要找到anaconda2中jupyter文件,在anaconda2中的share文件中,对jupyter执行如下命令,来修改jupyter的权限:

chmod +777 /root/.jupyter/practice

之后重启jupyter即可运行,python代码

jupyter 快捷键

Jupyter Notebook 快捷键

jupyter notebook 写代码自动补全

1.安装nbextensions

1
2
pip install jupyter_contrib_nbextensions -i https://pypi.mirrors.ustc.edu.cn/simple
jupyter contrib nbextension install --user

2.安装nbextensions_configurator

1
2
pip install --user jupyter_nbextensions_configurator 
jupyter nbextensions_configurator enable --user

如果提示缺少依赖,就使用pip安装对应依赖即可。

重启jupyter,在弹出的主页面里,能看到增加了一个Nbextensions标签页,在这个页面里,勾选Hinterland即启用了代码自动补全,然后重启大功告成。

Jupyter Notebook 超实用的 5 个插件

出现的问题

如果出现错误如下:

1
2
3
4
5
6
7
8
9
Installing collected packages: msgpack
Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问。:
'E:\\JiangHeSong\\Anaconda35.2.0\\Lib\\site-packages\\msgpack\\_packer.cp36-win_
amd64.pyd'
Consider using the `--user` option or check the permissions.

You are using pip version 10.0.1, however version 18.0 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' comm
and.

只需要加一个–user 例如:

pip install --user msgpack -i https://pypi.mirrors.ustc.edu.cn/simple

在Jupyter Notebook中交互式运行C++代码

编译安装(坑货)

参考:为什么是坑货呢?Jupyternotebook添加c++核心支持的配置过程(新浪blog)

Jupyter Notebook 支持非常多的编程语言,而且可以直接运行这些语言的代码。要让 Jupyter Notebook 能够运行特定语言的代码,需要添加对应的内核。具体支持的语言及内核可以查看该链接: https://github.com/jupyter/jupyter/wiki/Jupyter-kernels

cling 内核依赖于 Python3

添加 C++ cling 内核

克隆 cling 的 Github 官方仓库:

git clone https://github.com/root-project/cling.git

在进行编译操作之前,首先要确保你的机器上已经装好了 cmake 工具,即能够直接通过输入命令 cmake
执行程序。

如果 cmake
已经正确安装,就可以进行以下的操作了。

切换到 cling/tools/packaging/ 目录下,执行以下两条命令:

1
2
chmod +x cpt.py  
./cpt.py --check-requirements && ./cpt.py --create-dev-env Debug --with-workdir=./cling-build/

这个过程包含了从网络上获取源文件以及编译,是最为耗时的一个阶段,以小时计。

编译完成后,需要在 python3 中安装 clingkernel。切换到 cling/tools/Jupyter/ 目录下,执行

pip3 install kernel/

最后一步,往 Jupyter Notebook 中添加 cling 内核,可以根据自己的需要安装特定 C++ 规范的 cling 内核,例如 cling-cpp11, cling-cpp14, cling-cpp17。

jupyter kernelspec install kernel/cling-cpp17

如果没有其他问题,此时就可以打开 Jupyter Notebook 感受不一样的 C++ 编程了!
官方代码示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Rectangle {  
private:
double w;
double h;

public:

Rectangle(double w_, double h_) {
w = w_;
h = h_;
}
double area(void) {
return w * h;
}
double perimiter(void) {
return 2 * (w + h);
}
};

Rectangle r = Rectangle(5, 4);
r.area();

输出为:

1
2
cpp
(double) 20.000000

快速安装

一、 安装Xeus-Cling

目前已支持Mac和Ubuntu,windows自测,推荐使用conda安装。

1.首先创建一个conda environment并激活(如果不会在虚拟环境中打开jupyter,可在base环境中安装)

1
2
conda create -n Xeus-Cling
source activate Xeus-Cling

然后使用conda package installer安装Xeus-Cling

1
conda install -c conda-forge xeus-cling

完成!
二、测试C++ Kernel

1.首先,激活环境并打开jupyter-notebook

1
2
source activate Xeus-Cling
jupyter-notebook

安装的 C++ 内核 11 14 17 区别

c++11/14/17标准你了解多少(CSDN)
官方(微软、英语)#featurelist)

Conda使用手册

Conda使用手册(CSDN)

清华大学开源软件镜像站

科大源镜像站

jupyter 云平台

binder

C++ jupyter

只下载github的某个文件夹

很多时候我们只想下载某个文件夹,而不是整个目录

我们可以用svn,先安装

1
2
3
apt install subversion

yum install subversion

比如你要下载这个https://github.com/QuantStack/xeus-cling/tree/master/notebooks,将/tree/master/换成/trunk/即可

1
svn checkout https://github.com/QuantStack/xeus-cling/trunk/notebooks

奇技淫巧

1、Jupyter常用的快捷键

1)代码运行键

如需运行一个cell(代码框)内的Python代码,可以选择Ctrl + Enter组合键,也可以选择Shift + Enter组合键。两者的区别在于前者在运行完代码后不会新增cell,而后者会新增cell或跳转到下一个cell。

2)自动补齐键

在代码编写过程中,如果只记得函数或变量名称的前几个字母,可以通过Tab键,实现全名称(如函数名、方法名、变量名等)的自动补齐。

3)帮助查询键

Python中有庞大的第三方包,而每个包中又包含很多功能性的函数,在使用这些函数时,往往会忘记函数内参数的具体用法,此时可以在函数后面按入Shift+Tab组合键,查看对应的帮助文档,而且还可以多按几次“Tab”键,返回不同风格的帮助文档。

4)cell创建键

在command模式下,按下字母a键,则会在当前cell的上方新增一个cell,如果按下字母b键,则会在当前cell的下方新增一个cell。

5)cell删除键

在command模式下,连续按两次d字母键,就可以轻松删除当前cell。或者还有另一个方法,在command模式下,按一次字母x键也可以实现cell的删除。

6)注释添加/取消键

如需给代码行或代码块增加注释功能,可以使用“Ctrl+/”的组合键,对于代码块的注释需要先选中,在使用组合键。如果原始代码中没有注释符,按入该组合键则增加注释,否则将取消注释。

7)保存键

在编写代码时,最好养成良好的习惯,那就是编写代码便保存(尽管Jupyter默认会2分钟自动保存一次,但2分钟内万一出现一些意外,岂不是糟糕啦)。代码的保存可以在command模式下,按一次字母s键。

8)行号显示键

在其他编程环境中也许会显示代码行号,但是在Jupyter的默认情况下是没有代码行号的,如果期望一个cell中显示所有代码对于的行编号,可以在command模式下,按一次字母l键。

9)code与markdown间切换键

code指的是Jupyter环境下所进行的Python代码的编写,而markdown则是用于非代码的笔记内容的编写。两者之间是可以轻松切换的,在command模式下,按一次字母m便从code切换到markdowen模式;如果从command模式中,按一次字母y就可以从markdown模式切换到code模式。

2、Jupyter中的魔法函数

1)%pwd

该魔法函数用于显示Jupyter当前的工作空间。

2)%hist

该魔法函数用于显示当前Jupyter中,所有运行过的历史代码。

3)%who

该魔法函数用于显示当前Jupyter环境中的所有变量或名称。

4)%reset

该魔法函数用于删除当前Jupyter环境中的所有变量或名称。

5)%time

该魔法函数用于计算当前代码行的运行时长。

6)%timeit

该魔法函数用于计算当前代码行的平均运行时长(即在执行一个语句100000次(默认情况下)后,再给出运行最快3次的平均值。

7)%%timeit

该魔法函数用于计算当前cell的代码运行时长。

8)%matplotlib

该魔法函数用于显示绘图结果的风格,默认为%matplotlib inline,是直接将图片显示在浏览器中,如果希望图片单独生成,可以使用%matplotlib。

9)%load

该魔法函数用于加载本地Python文件或者网络中的Python文件,例如本地脚本文件的加载:%load xxx.py。

10)%run

该魔法函数用于运行本地或网络中的Python文件,例如本地脚本文件的运行:%load xxx.py。

其他连接

jupyter notebook系列之 自定义主题、字体、字号等(WX)
python开发者必备,史上最详细的 jupyter 教程(WX)

在 jupyter 里使用 C++(B站文章)

Jupyter Notebook界面也可以如此炫酷?有人把Notebook玩出了新花样

十大至简规则!

15 款好用到爆炸的 Jupyter Lab 插件

JupyterLab,极其强大的下一代 notebook

Jupyter在美团民宿的应用实践

喜欢这篇文章?打赏一下作者吧!

欢迎关注我的其它发布渠道