打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
1.2.4 定制IPython Notebook

1.2.4    定制IPython Notebook

虽然IPython只提供了最基本的编辑、运行Notebook的功能,但是它具有丰富的可定制性,用户可以根据自己的需要打造出独特的Notebook开发环境。如图1 8所示,IPython Notebook系统由浏览器、服务器和运算核三部分组成。IPython分别提供了这三部分的定制方法。

1. 用户配置(profile)

每次启动IPython时都会从指定的用户配置(profile)文件夹下读取配置信息。下面的代码输出当前的用户配置文件夹的路径:该路径由HOME环境变量、.ipython和profile_配置名构成。

在本书提供的运行IPython Notebook的批处理文件中配置了HOME环境变量,因此能将配置文件夹和Notebook文件一起打包。

  1. import os  
  2. ipython = get_ipython()  
  3. print "HOME环境变量:", os.environ["HOME"]  
  4. print "IPython配置文件夹:", ipython.ipython_dir  
  5. print "当前的用户配置文件夹:", ipython.config.ProfileDir.location  
  6. HOME环境变量: C:\Users\RY\Dropbox\scipybook2\settings  
  7. IPython配置文件夹: C:\Users\RY\Dropbox\scipybook2\settings\.ipython  
  8. 当前的用户配置文件夹:   
  9. C:\Users\RY\Dropbox\scipybook2\settings\.ipython\profile_scipybook2  

可以在命令行中输入如下命令来创建新的用户配置:

  1. ipython profile create test 

修改用户配置文件夹之下的配置文件之后,在启动Notebook时通过--profile参数指定所采用的用户配置:

  1. ipython notebook --profile test 

2. 服务器扩展插件和Notebook扩展插件

在.ipython文件夹之下还有两个子文件夹--extensions和nbextensions,它们分别用于保存服务器和浏览器的扩展程序。

extensions:存放用Python编写的服务器扩展程序。

nbextensions:存放Notebook客户端的扩展程序,通常为JavaScript和CSS样式表文件。

Notebook的服务器基于tornado服务器框架开发,因此编写服务器的扩展程序需要了解tornado框架,而开发Notebook客户端(浏览器的界面部分)的扩展程序则需要了解HTML、JavaScript和CSS样式表等方面的内容。这些内容与本书的主题无关,就不再详细叙述了。下面看看如何安装他人开发的扩展程序。

  1. https://github.com/ipython-contrib/IPython-notebook-extensions/wiki/config-extension 

安装IPython扩展程序的说明。

首先执行下面的语句来安装Notebook客户端的扩展程序,user参数为True表示将扩展安装在HOME环境变量路径之下的.ipython文件夹中:

  1. import IPython.html.nbextensions as nb  
  2. ext= 'https://github.com/ipython-contrib/IPython-notebook-extensions/archive/3.x.zip' 
  3. nb.install_nbextension(ext, user=True)  

上面的程序将在nbextensions文件夹下创建IPython-notebook-extensions-3.x文件夹,其中包含了许多客户端扩展程序。接下来按照如下步骤完成安装:

(1) 将nbextensions\IPython-notebook-extensions-3.x\config移到nbextensions文件夹之下。

(2) 将nbextensions\config\nbextensions.py移到extensions文件夹之下。

(3) 在.ipython之下创建templates文件夹。

(4) 将nbextensions\config\nbextensions.html移到templates文件夹之下。

(5) 将nbextensions\config\ipython_notebook_config.py中的代码添加到profile_default\ipython_ notebook_config.py中。

(6) 访问http://localhost:8888/nbextensions/,在该页面上可以管理nbextensions文件夹下安装的客户端扩展程序。

当Notebook服务器启动时,会运行用户配置(profile)文件夹之下的ipython_notebook_config.py文件,并使用其中的配置。

下面是ipython_notebook_config.py中的配置代码。 首先将extensions文件夹添加到Python的模块搜索路径之下,因此该路径之下的nbextensions.py文件可以通过import nbextensions载入。 指定服务器扩展程序的模块名,由于之前添加了搜索路径,因此Python可以直接通过模块名'nbextensions'找到对应的文件nbextensions.py。 将templates文件夹添加到服务器扩展程序的网页模板的搜索路径,让服务器可以找到nbextensions.html文件。

  1. from IPython.utils.path import get_ipython_dir  
  2. import os  
  3. import sys  
  4.  
  5. ipythondir = get_ipython_dir()  
  6. extensions = os.path.join(ipythondir,'extensions')   
  7. sys.path.append( extensions ) ?  
  8.  
  9. c = get_config()  
  10. c.NotebookApp.server_extensions = [ 'nbextensions'] ?  
  11. c.NotebookApp.extra_template_paths = [os.path.join(ipythondir,'templates')] ?  

nbextensions扩展程序为服务器添加了一个新的URL--http://localhost:8888/nbextensions/,通过该路径可以开启或禁止指定的客户端扩展程序。nbextensions扩展程序通过递归搜索nbextensions文件夹下的YAML文件识别客户端扩展程序,IPython-notebook-extensions-3.x目录下只有部分扩展程序附带了YAML文件,读者可以仿照这些文件为其他的扩展程序添加相应的YAML文件,这样就可以通过nbextensions页面管理扩展程序了。

3. 添加新的运算核

由于执行用户代码的运算核与Notebook服务器是独立的进程,因此不同的Notebook可以使用不同版本的Python,甚至是其他语言的运算核。IPython的下一个版本将改名为Jupyter,其目标是创建通用的科学计算的开发环境,支持Julia、Python和R等在数据处理领域流行的语言。下面以Python3-64bit为例介绍如何添加新的运算核。

首先从WinPython的网址下载WinPython-64bit-3.4.3.3.exe,并安装在C盘根目录之下。然后运行下面的代码来创建运算核配置文件:

  1. import os  
  2. from os import path  
  3. import json  
  4.  
  5. ipython = get_ipython()  
  6. kernels_folder = path.join(ipython.ipython_dir, "kernels")  
  7. if not path.exists(kernels_folder):  
  8.     os.mkdir(kernels_folder)  
  9.  
  10. python3_path = "C:\\WinPython-64bit-3.4.3.3\\scripts\\python.bat" 
  11.  
  12. kernel_settings = {  
  13.  "argv": [python3_path,   
  14.           "-m", "IPython.kernel", "-f", "{connection_file}"],  
  15.  "display_name": "Python3-64bit",  
  16.  "language": "python"  
  17. }  
  18.  
  19. kernel_folder = path.join(kernels_folder, kernel_settings["display_name"])  
  20. if not path.exists(kernel_folder):  
  21.     os.mkdir(kernel_folder)  
  22.  
  23. kernel_fn = path.join(kernel_folder, "kernel.json")  
  24.  
  25. with open(kernel_fn, "w") as f:  
  26.     json.dump(kernel_settings, f, indent=4)  

上面的代码创建.ipython\kernels\python3-64bit\kernel.json文件,它是一个JSON格式的字典,其中"argv"键为运算核的启动命令,"display_name"为运算核的显示名称,"language"为运算核的语言。

刷新Notebook的索引页面之后,可以在"New"下拉菜单中找到"Python3-64bit"选项,单击它将打开一个以Python3 64bit解释器为运算核的Notebook页面。在Notebook页面中也可以使用"Kernel"菜单更改当前的运算核。运算核的配置保存在Notebook文件中,因此下一次开启Notebook时,将自动使用最后一次选择的运算核。

感兴趣的读者可以试试添加更多的运算核,笔者在Windows系统下成功地安装了PyPy、Julia、R、NodeJS等运算核。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:342347198

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
jupyter(ipython) notebook 工作路径设置方法
jupyter notebook使用技巧
Python编程神器Jupyter Notebook使用的28个秘诀
Jupyter在美团民宿的应用实践
一文吃透 Jupyter Notebook
终于把 jupyter notebook 玩明白了
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服