juypter
1. jupyter
1.1. 它是什么?
Jupyter Notebooks 是一款开源的网络应用,我们可以将其用于创建和共享代码与文档。
以前叫ipython notebook。
1.2. 它可以做什么?
像其它IDE一样,写代码;
不同之处是它的代码是按独立单元编写和执行的,每次执行只会找执行某个单元内的代码。
2. 安装/启动
2.1. linux平台
系统版本:centos6.5
安装
pip install jupyter
生成配置文件
# jupyter notebook --generate-config
Writing default config to: /root/.jupyter/jupyter_notebook_config.py
生成密码
# ipython
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:43b95b731276:5d330ee6f6054613b3ab4cc59c5048ff7c70f549'
In [3]:
配置远程访问
vi /root/.jupyter/jupyter_notebook_config.py
c.NotebookApp.ip='*' #设置访问notebook的ip,*表示所有IP
c.NotebookApp.password = u'sha1:5df252f58b7f:bf65d5312' #填写刚刚生成的密文
c.NotebookApp.open_browser = False # 禁止notebook启动时自动打开浏览器(linux服务器一般都是ssh命令行访问,没有图形界面,启动也没啥用)
c.NotebookApp.port =8889 #指定访问的端口,默认是8888。
运行
启动jupyter notebook --no-browser
编辑
浏览器访问http:/ip:8888
显示jupyter界面即为成功。
2.2. windows
install:
pip install jupyter
pip uninstall jupyter
start:
进入命令行,输入jupyter notebook
它实质上是启动一个server并提供web界面用于编辑。
在浏览器中访问http://localhost:8888
结果示意图:
注意:jupyter的主目录是当前目录
2.2.1. pycharm与jupyter
在pycharm中也可以运行jupyter,它实质上是一个server,在pycharm中添加一个类型为jupyter notebook的编译器,然后运行它。
等效于在cmd中执行juypter notebook。
后续操作相同于上文所述。
3. 使用
3.1. 代码文件及格式
与官方的不同,它的代码文件格式为.ipynb,无法直接python a.ipynb运行,
不过可以以ipython temp.ipynb方式运行。
3.2. 代码编辑
其它功能性内容很简单,创建文件,编辑,保存,操作友好性非常高。
3.3. 格式转换
如果想把.ipynb文件转换为.py格式,在file>download as下提供的相应选择项。
3.4. 更换工作目录
两种方式:
- 在配置文件中设置
c.NotebookApp.notebook_dir =' '
- 在相应项目目录下启动jupter notebook
这时默认工作目录为当前目录。
3.5. jupyter与.py
jupyter程序的文件是.ipynb格式,不能直接执行.py文件,需要导入。
导入t.py模块很简单
import t
问题在于如果修改了.py文件,它不会自动在下一次执行时自动更新除非手动重新装载模块:
import t
from imp import reload
reload(t)
新的问题是很多时候只需要引用模块中的某一对象而非全部,重载就太不方便了;
另一个更大的问题是如果修改了模块所引用的模块,它也不会自动更新,而对每一个模块reload是不可行的。
解决方案:
猜测可能是由于缓存的原因,因此,使用jupyter调试.py模块时,每次修改模块后需要重启服务并清空输出,而不是运行。
注意:重启服务并运行所有模块并不会更新输出,这也是个坑。
4.
附
4.1.
linux开发环境配置
目的:windows下开发,linux下运行
方案:windows下使用pycharm开发,将目录挂载到linux,测试运行使用jupyter远程
挂载命令:
mount -t cifs -o username=name,password=pass
//ip/flask /home/my_python_file/win_python