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

業餘時間,偶爾接觸了python,感受python很優雅,遂研究一下。基於elk報警器elastalert的微信企業號插件html

以前一直用的sublime text 3 , 可是對於控制檯輸入(2.x raw_input,3.x input)支持不太好,雖然能夠經過sublimeREPL->python->execfile(filepath)實現,可是無疑更繁瑣(可使用sublime 的key bindings,定義快捷鍵來觸發,可是仍是以爲繁瑣),並且使用sublime+python切換python版本也不方便(網上不少資料是基於python2.x),可是python3的文章資料也愈來愈多,學習時常常須要切換很不方便python

通過一番搜索,最後決定使用Anaconda Anaconda是Python衆多發行版中很是適用於科學計算的版本,裏面已經集成了不少優秀的科學計算Python庫,開源且免費,全平臺支持:linux,mac,windows;支持python 2.x,3.x,Anaconda集成了jupyter notebook ,可使用 try it in your browser 進行體驗。linux

安裝anaconda

官方安裝包 www.continuum.io/downloads ,可是國內比較慢,可使用清華鏡像 ,從 mirrors.tuna.tsinghua.edu.cn/anaconda/ar… 下載安裝包。目前(2017-07-02)最新的是 Anaconda3-4.4.0-* nginx

我下載的是windows 64位版Anaconda3-4.4.0-Windows-x86_64.exe(若是用於機器學習(e.g. Tensorflow) 建議使用Linux系統,具體參見 Keras安裝和配置指南(Windows))。git

同時推薦 李金《中文 Python 筆記》 ,github 打開.ipynb 較慢,推薦使用NbViewer 查看github

切換python版本

參考 Managing Python 或者 Anaconda多環境多版本python配置指導web

打開 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit) 運行 Anaconda Promptjson

設置清華鏡像源

更多可參閱 conda 使用清華大學開源軟件鏡像 或者 清華鏡像segmentfault

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? 的回答windows

  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…

相關文章
相關標籤/搜索