阅读 2929

安装anaconda并且配置jupyter notebook支持python2.x和3.x共存

业余时间,偶尔接触了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? 的回答

  1. 打开 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit) 运行 Anaconda Prompt
  2. 运行jupyter notebook --generate-config
  3. 会生成一个默认配置文件,C:\Users\{用户名}\.jupyter\jupyter_notebook_config.py
  4. 修改#c.NotebookApp.notebook_dir = ''c.NotebookApp.notebook_dir = '你的默认路径'
  5. 打开C:\Users\{用户名}\Anaconda3\Scripts
  6. 右键单击jupyter-notebook.exe并发送到桌面快捷方式
  7. 在桌面上找到该快捷方式,右键->属性->更改图标(C)...->{Anaconda3_home}\Menu\jupyter.ico
  8. 双击运行,会自动打开默认浏览器。

输入

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第一行中路径用\\替代\

jupyter-change-kernel
jupyter-change-kernel

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设置为开机自启动服务

  1. 打开 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit) 运行 Anaconda Prompt
  2. 切换回anaconda默认环境activate root
  3. 创建密码 jupyter notebook password Preparing a hashed password
  4. 修改C:\Users\{用户名}\.jupyter\jupyter_notebook_config.pyc.NotebookApp.ip = '*',c.NotebookApp.open_browser = False
  5. 重启 jupyter ,打开 http://{ip}:8888, 提示输入密码,输入密码即可登录
  6. 注册为服务 下载nssm 注意,如果之前用过nssm,建议升级到 nssm 2.24-101-g897c7ad 版本,详见 Windows 10 Creators Update
  7. {nssm_home}\win64\nssm.exe install jupyter {Anaconda3_home}\Scripts\jupyter-notebook.exe --config=C:\Users\{用户名}\.jupyter\jupyter_notebook_config.py
  8. `{nssm_home}\win64\nssm.exe start jupyter'
  9. 浏览器打开 http://ip:8888 输入密码登录

注意,nssm默认使用LOCALSYSTEM账号操作,而jupyter默认读取~\.jupyter(~\是当前登录用户文件夹),可以使用nssm set <servicename> ObjectName <username> <password> 使用指定用户,这样就不需要--config=C:\Users\{用户名}\.jupyter\jupyter_notebook_config.py 参数了,具体详见 UsageManaging 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…

关注下面的标签,发现更多相似文章
评论