业余时间,偶尔接触了python,感觉python很优雅,遂研究一下。基于elk报警器elastalert的微信企业号插件
之前一直用的sublime text 3 , 但是对于控制台输入(2.x raw_input,3.x input)支持不太好,虽然可以通过sublimeREPL
->python
->execfile(filepath)
实现,但是无疑更繁琐(可以使用sublime 的key bindings,定义快捷键来触发,但是还是觉得繁琐),而且使用sublime+python
切换python版本也不方便(网上很多资料是基于python2.x),但是python3的文章资料也越来越多,学习时经常需要切换很不方便
经过一番搜索,最后决定使用Anaconda Anaconda是Python众多发行版中非常适用于科学计算的版本,里面已经集成了很多优秀的科学计算Python库,开源且免费,全平台支持:linux,mac,windows;支持python 2.x,3.x,Anaconda集成了jupyter notebook ,可以使用 try it in your browser 进行体验。
安装anaconda
官方安装包 www.continuum.io/downloads ,但是国内比较慢,可以使用清华镜像 ,从 mirrors.tuna.tsinghua.edu.cn/anaconda/ar… 下载安装包。目前(2017-07-02)最新的是 Anaconda3-4.4.0-*
我下载的是windows 64位版Anaconda3-4.4.0-Windows-x86_64.exe(如果用于机器学习(e.g. Tensorflow) 建议使用Linux系统,具体参见 Keras安装和配置指南(Windows))。
同时推荐 李金的 《中文 Python 笔记》 ,github 打开.ipynb 较慢,推荐使用NbViewer 查看
切换python版本
参考 Managing Python 或者 Anaconda多环境多版本python配置指导
打开 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit)
运行 Anaconda Prompt
设置清华镜像源
更多可参阅 conda 使用清华大学开源软件镜像 或者 清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes复制代码
修改windows下jupyter默认路径
参考 stackoverflow 上 how to change jupyter start folder? 的回答
- 打开
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit)
运行Anaconda Prompt
- 运行
jupyter notebook --generate-config
- 会生成一个默认配置文件,
C:\Users\{用户名}\.jupyter\jupyter_notebook_config.py
- 修改
#c.NotebookApp.notebook_dir = ''
为c.NotebookApp.notebook_dir = '你的默认路径'
- 打开
C:\Users\{用户名}\Anaconda3\Scripts
- 右键单击
jupyter-notebook.exe
并发送到桌面快捷方式
- 在桌面上找到该快捷方式,
右键
->属性
->更改图标(C)...
->{Anaconda3_home}\Menu\jupyter.ico
- 双击运行,会自动打开默认浏览器。
输入
print('hello jupyter')复制代码
按 Ctrl+Enter 运行,结果如下
具体快捷键,参见 Help
-> Keyboard Shortcuts
创建python2.7环境
conda create -n python27 python=2.7 -y
activate python27复制代码
设置jupyter 2.7,3.6共存
参考 Anaconda3 Python 3 和 2 in Jupyter Notebook共存方法
conda install ipykernel -y复制代码
复制${Anaconda3_home}\share\jupyter\kernels\python3
并重命名为${Anaconda3_home}\share\jupyter\kernels\python27
,编辑${Anaconda3_home}\share\jupyter\kernels\python27\kernel.json
{
"argv": [
"${Anaconda3_home}\\envs\\python27\\python.exe",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 27",
"language": "python"
}复制代码
注意,修改display_name
为自定义名称,argv
第一行中路径用\\
替代\
在cell
中输入
import sys
sys.version复制代码
切换不同python版本 按Ctrl+Enter运行 查看版本,e.g. 上图中的3.6.1
,因为 Tensorflow官方文档说windows只支持 3.5.x ,故而又装了一个3.5.3的环境
jupyter作为公开服务使用(云IDE)
参考 Running a notebook server ,使用nssm将jupyter设置为开机自启动服务
- 打开
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit)
运行Anaconda Prompt
- 切换回anaconda默认环境
activate root
- 创建密码
jupyter notebook password
Preparing a hashed password - 修改
C:\Users\{用户名}\.jupyter\jupyter_notebook_config.py
中c.NotebookApp.ip = '*'
,c.NotebookApp.open_browser = False
- 重启 jupyter ,打开 http://{ip}:8888, 提示输入密码,输入密码即可登录
- 注册为服务 下载nssm 注意,如果之前用过nssm,建议升级到 nssm 2.24-101-g897c7ad 版本,详见 Windows 10 Creators Update
{nssm_home}\win64\nssm.exe install jupyter {Anaconda3_home}\Scripts\jupyter-notebook.exe --config=C:\Users\{用户名}\.jupyter\jupyter_notebook_config.py
- `{nssm_home}\win64\nssm.exe start jupyter'
- 浏览器打开 http://ip:8888 输入密码登录
注意,nssm默认使用LOCALSYSTEM
账号操作,而jupyter默认读取~\.jupyter
(~\
是当前登录用户文件夹),可以使用nssm set <servicename> ObjectName <username> <password>
使用指定用户,这样就不需要--config=C:\Users\{用户名}\.jupyter\jupyter_notebook_config.py
参数了,具体详见 Usage 和 Managing services from the command line
2017-03更新,增加nginx反向代理
nginx反向代理
upstream jupyter {
server http://ip:8888;
server http://ip2:8888;
}
server {
listen 80;
server_name jupyter.example.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Nginx-Proxy true;
proxy_set_header Host $host;
# kernels使用websocket通讯,需要增加Upgrade和Connection [WebSocket proxying](http://nginx.org/en/docs/http/websocket.html)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
#如果是单服务,无负载,则不需要用upsstream
#proxy_pass http://ip:8888;
proxy_pass http://jupyter;
}
}复制代码
博客 anjia.ml/2017/07/02/…
掘金 juejin.im/post/595897…
简书 www.jianshu.com/p/e981c9d28…