業餘時間,偶爾接觸了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…