又到擺脫重複工做,換個心情,然而並無軟用的時間了。此次,教你們如何搭建一個好看的jupyter環境。css
先來展現一下個人環境python
python: 3.5.*git
macos: 10.12.4github
安裝Jupyter的過程只需安裝Anaconda便可。shell
測試一下初始設置:macos
jupyter notebook
首先,若是每次你打開一個nb(notebook)時,若是都須要載入一些模塊,一個很好地方法就是配置ipython的配置文件,能夠直接使用如下命令建立配置文件:segmentfault
ipython profile create
此時你會在~/.ipython/profile_default/
目錄中得到下面兩個文件:bash
ipython_config.py
:打開任意ipython kernel時都會運行markdown
ipython_notebook_config.py
:打開notebook時會運行網絡
配置方式是在所須要的配置文件中先鍵入:
c = get_config()
而後就能夠經過修改c
的屬性來控制全部的配置。
顯然,對大多數分析場景,numpy
, scipy
, pandas
是確定要載入的,所以,寫到配置中便可:
c.InteractiveShellApp.exec_lines = [ "import pandas as pd", "import numpy as np", "import scipy.stats as spstats", "import scipy as sp", ]
還有一個經常使用功能就是matplotlib
。matplotlib
在notebook中須要使用
%matplotlib inline
纔可默認在notebook中顯示圖像,一個簡單地方法就是在配置文件中加入,
c.IPKernelApp.matplotlib = 'inline'
固然,默認也須要載入matplotlib
c.InteractiveShellApp.exec_lines = [ "import pandas as pd", "import numpy as np", "import scipy.stats as spstats", "import scipy as sp", "import matplotlib.pyplot as plt" ]
固然,也能夠更多。但這樣可能會影響初始化notebook和ipython shell的速度,這個請你們本身權衡。
此外,單獨拎matplotlib
出來的另外一個緣由是,matplotlib
還有一箇中文顯示的問題。
首先,解決編碼問題。
python 2.7.*
的解決方案是,在配置中加入:
import seaborn as sns import sys# print sys.getdefaultencoding()# ipython notebook中默認是ascii編碼 reload(sys) sys.setdefaultencoding('utf8')
python 3.*
出於某些緣由,不建議經過sys
模塊修改編碼,緣由參見這裏。
解決方案是,在shell的配置中從新設置配置變量(bash的話設置文件.bashrc
,zsh則設置文件.zshrc
)。方法是末尾添加:
export PYTHONIOENCODING="utf8"
固然另外一個方法是在啓動notebook時使用
PYTHONIOENCODING="utf8" & jupyter notebook
第二個是修改matplotlib的默認字體。
首先咱們來看可使用的字體
import matplotlib.font_manager fonts = matplotlib.font_manager.findSystemFonts() l = [] for f in fonts: try: font =matplotlib.font_manager.FontProperties(fname=f) #print(font.get_family()) l.append((f, font.get_name(), font.get_family(), font.get_weight())) except: pass df = pd.DataFrame(l, columns=['path', 'name', 'family', 'weight']) df
你應該看到下面這樣的表格:
而後找到支持中文的字體名,而後設置matplotlib的默認字體:
import matplotlib as mpl mpl.rc('font', family='Noto Sans CJK SC')
固然,你能夠添加到剛纔的配置中,或者採用這個博客的方法。
此外,若是你使用seaborn
的話,seaborn
在設置配置時可能會覆蓋掉matplotlib
,此時採用如下代碼便可:
import seaborn as sns sns.set_style('ticks', { 'font.family': ['Noto Sans CJK SC'], })
可是,該語句不建議寫在配置中,由於常常須要修改,可能會覆蓋以前的配置。
直接使用下面語句便可,
%config InlineBackend.figure_format = 'retina'
固然也可在配置中直接加入
c.InlineBackend.figure_format = 'retina'
默認的notebook能夠逼你心中大喊WTF,這時候你須要一點CSS技能,修改~/.jupyter/custom/custom.css
的內容。
我的認爲最須要修改的內容包括
notebook的默認寬度:notebook默認比較寬,markdown文字會顯得比較少,若是須要對外展現,文字部分會過少。
notebook的代碼字體
個人修改規則是:
pre.CodeMirror-line { font-family: 'BlinkMacSystemFont', 'Lucida Grande', 'Segoe UI', Ubuntu, Cantarell, sans-serif } .output_subarea.output_text.output_result>pre { font-family: 'BlinkMacSystemFont', 'Lucida Grande', 'Segoe UI', Ubuntu, Cantarell, sans-serif } .output_subarea.output_text.output_stream.output_stdout>pre { font-family: 'BlinkMacSystemFont', 'Lucida Grande', 'Segoe UI', Ubuntu, Cantarell, sans-serif } #notebook-container { max-width: 830px; padding: 40px; }
這裏推薦兩個jupyter
插件:
jupyter notebook extensions
github地址在這裏。安裝和介紹也能夠參考。
而後你就能夠在jupyter主頁裏找到下面的標籤頁管理插件了:
若是你的jupyter服務是搭建在主機上,而且平時和業務人員想用notebook地址的方式交付,jupyter dashboard
插件是一個不錯的選擇。
安裝方法和github地址在這裏。
本來效果以下:
點擊以下紅色設置,並點擊黃色按鈕後
就可獲得以下的報告形式(刪去了業務人員不想查看的代碼),而後就能夠粘貼鏈接交付報告了:
切換成dashboard模式能夠拖拽相關方格來設置位置。
R kernel安裝方式有兩個:
conda create -n R-Env -c r r-essentials source activate R-Env conda install jupyter
而後在R中配置
install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest')) devtools::install_github('IRkernel/IRkernel') IRkernel::installspec()
建議必定要新建環境,否則會和你以前安裝的R衝突。
固然,我不建議這種安裝方式,緣由是:
不是不少人想在電腦裏有兩個R環境
在jupyter notebook中不配置默認鏡像,是無法選擇鏡像的,這致使無法再notebook中直接安裝R包,固然你也能夠配置好默認CRAN鏡像,但這樣顯然很麻煩,切換網絡環境後也很難調整
可能你在舊環境中已經安裝了大量包,這樣子遷移成爲問題
你必須在這個新環境中啓動jupyter
直接在R環境中使用如下語句
install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest')) devtools::install_github('IRkernel/IRkernel') IRkernel::installspec() IRkernel::installspec(user = FALSE)
這裏請作個區別:ipython是負責和python交互的部分,jupyter是做爲服務的部分。所以全部服務配置都要在~/.jupyter
中進行,而和python、模塊相關的配置都要在~/.ipython
中。
這裏主要配置的有ip和默認文件夾。
首先,生成配置文件:
jupyter notebook --generate-config
如今~/.jupyter/
內就生成jupyter_notebook_config.py
文件。
再次咱們設置ip,在其中添加,這樣就能夠外網訪問。
NotebookApp.ip = '127.0.0.1'
最後,加上默認啓動位置,這樣,在任何工做目錄下都能保證,notebook的啓動位置一致。
NotebookApp.notebook_dir = '/jupyter'
大功告成,如今開工!
==================================
2017-5-10
增長R kernel安裝討論
增長jupyter服務配置