由于在PyCharm中進(jìn)行統(tǒng)計(jì)整理數(shù)據(jù)谦炬、畫圖等操作有諸多的不便键思。在本地的jupyter notebook進(jìn)行處理又顯得步驟繁瑣(傳輸文件)甫贯,故萌生在服務(wù)器搭建jupyter notebook的想法。兩種工具優(yōu)勢互補(bǔ)赔桌,從而最大程度上集中注意力在項(xiàng)目本身纬乍,提升開發(fā)效率裸卫。
原文發(fā)布于個(gè)人博客(好望角)墓贿,并在博客持續(xù)修改更新,此處可能更新不及時(shí)队伟。
“工欲善其事幽勒,必先利其器”啥容,接下來看看如何用PyCharm和Jupyter配置最便捷的python開發(fā)環(huán)境咪惠。
PyCharm
一打開軟件界面遥昧,滿滿的科幻感迎面撲來。用色塊構(gòu)建的魔幻畫面好似一張變形金剛的面龐永脓。最新的版本加入了默認(rèn)的Vim編輯模式憨奸,讓強(qiáng)大的PyCharm更如猛虎添翼一般排宰。
基礎(chǔ)配置
打開設(shè)置界面的快捷鍵是Ctrl+Alt+S
那婉。
背景色:軟件默認(rèn)的背景是白色的详炬,這顯然不符合我們廣大程序員的審美。
File -> Appearance &Behaior -> Appearance
中可以修改在跳, Darcula 是常用的黑色主題猫妙。字體:不出意外的話割坠,你會(huì)認(rèn)為它的字體有些小。
File -> Editor -> Font
中可以放大对妄,console中的代碼和編輯區(qū)的代碼設(shè)置方式類似剪菱。主題:如果對(duì)默認(rèn)主題的配色不滿意拴签,可以在
File -> Editor -> Color Scheme
中修改篓吁。代碼風(fēng)格:在
File -> Editor -> Code Style
中杖剪,可以對(duì)不同類型的代碼文件可以分別進(jìn)行個(gè)性化設(shè)置。
代碼模板
懶人改變世界盛嘿,而程序員往往都很懶次兆。。漓库。能讓計(jì)算機(jī)手工完成的內(nèi)容絕對(duì)不會(huì)自己動(dòng)手重復(fù)添加渺蒿。
不難發(fā)現(xiàn)茂装,在程序開發(fā)過程中少态,有一些代碼基本沒有變化彼妻,而且我們會(huì)經(jīng)常性的重復(fù)使用训挡。那么澜薄,這種傻傻很麻煩的事情最適合計(jì)算機(jī)來自動(dòng)完成了颊艳。顯然忘分,開發(fā)PyCharm的程序員小哥想到了這一用戶痛點(diǎn)妒峦。
在 File -> Editor -> File and Code Templates
中肯骇,我們可以將常用的文件類型中的一些常用代碼寫入該類型文件的默認(rèn)模板中笛丙,例如。
# -*- coding: utf-8 -*-
除此之外骨稿,還可以在文件開頭添加一些注釋信息坦冠。如下所示:
版本控制
一個(gè)好的開發(fā)環(huán)境不可能沒有版本控制系統(tǒng)。
PyCharm內(nèi)置了CVS泰讽、Git、Mercurial佛玄、Subversion等多種版本控制工具梦抢,我們只需要簡單的配置即可使用奥吩。
從github上Clone 代碼霞赫,上傳保存,進(jìn)行版本控制叠洗,多人協(xié)同開發(fā)灭抑,統(tǒng)統(tǒng)可以在軟件內(nèi)輕松地完成。
遠(yuǎn)程調(diào)試
這是一個(gè)超級(jí)良心的免費(fèi)功能荤牍,我相信即使這個(gè)功能收費(fèi)参淫,也會(huì)有很多程序員小哥繼續(xù)使用PyCharm。在其他的地方寫代碼鞋既,我們都需要在本地調(diào)試好,再上傳服務(wù)器陡舅。出問題后,再次修改伴挚,再次上傳靶衍,非常浪費(fèi)時(shí)間。那么如何簡化本地代碼和服務(wù)器代碼之間的溝通工作呢茎芋?PyCharm也幫我們內(nèi)置好了颅眶。
在Tools -> Deployment -> Configurtion
中可以配置好多臺(tái)服務(wù)器,如果服務(wù)器中的python環(huán)境配置良好田弥,我們就不需要再單獨(dú)在本地配置一遍涛酗。配置如下所示:
在對(duì)應(yīng)的位置填寫好服務(wù)器的位置,自己的用戶名和密碼,以及想要打開的根目錄(節(jié)省重復(fù)打開文件夾的時(shí)間)商叹。
第二個(gè)選項(xiàng)卡Mappings中配置本地項(xiàng)目和服務(wù)器項(xiàng)目對(duì)應(yīng)的映射關(guān)系燕刻。這里有個(gè)需要注意的地方剖笙,建議只將代碼和訓(xùn)練語料分開存儲(chǔ)籍滴,不要使訓(xùn)練語料成為映射項(xiàng)目的一部分,加快加載速度坦报。在第一次配置好開發(fā)環(huán)境的時(shí)候字管,需要將服務(wù)器的一些文件下載到本地抽活,需要稍等幾分鐘,以后就很幸福了!
在Tools -> Deployment -> Configurtion
中選擇本地文件的上傳方式辛掠,我這里將Ctrl+S
設(shè)置為本地保存并上傳服務(wù)器猩谊。
Jupyter-notebook
對(duì)于jupyter notebook來說暗甥,它的缺點(diǎn)還是十分明顯的。沒有一個(gè)很好的框架,不能清晰的構(gòu)建大型項(xiàng)目。也不曾擁有IDECtrl+點(diǎn)擊函數(shù)名
就可以跳轉(zhuǎn)的方便功能,導(dǎo)致閱讀代碼吃力耕蝉。
但同樣的场躯,它的對(duì)于PyCharm的優(yōu)點(diǎn)也是無可替代的粘茄。
PyCharm簡直是一個(gè)科學(xué)計(jì)算的神奇,在做數(shù)據(jù)挖掘的時(shí)候,代碼和報(bào)告(支持latex公式)高度融合,無需二次撰寫。
在處理數(shù)據(jù)的時(shí)候锯岖,所有中間結(jié)果不會(huì)被擦除辙喂,都顯示在對(duì)應(yīng)的cell下面灸蟆。方便調(diào)試斋枢,減輕記憶的工作量。
方便的圖表展示赃阀,不像PyCharm那樣驮俗,會(huì)新彈出一個(gè)窗口展示圖片索烹,圖文融合在一起求类。
等等……
雖然優(yōu)點(diǎn)眾多俗他,但如果只能在本地運(yùn)行也只能算是雞肋。經(jīng)常將工程中的部分文件從服務(wù)器傳輸?shù)奖镜卦俜治隹@是一件很累人的事情。
服務(wù)器jupyter搭建
首先保證我們的linux服務(wù)器的python(Anaconda)環(huán)境已經(jīng)配置好了上荡。
打開Ipython,輸入如下兩行代碼后,會(huì)生成一個(gè)字符串官扣,例如”sha1:9305015210b4:32cad364c85e7f7a13b9efa137cfadf633cc62d“。請(qǐng)復(fù)制出來暫時(shí)保存谤祖,稍后會(huì)使用。
from notebook.auth import passwd
passwd()
- 如果
~/.jupyter
路徑下沒有 jupyter_notebook_config.py 磺樱,則輸入如下命令新建它芜辕。
jupyter notebook --generate-config
- 新產(chǎn)生的文件中的所有內(nèi)容都以注釋的形式存在训裆,直接在文件末尾加入如下幾行代碼,并根據(jù)自己的環(huán)境調(diào)整路徑记劝。
c.NotebookApp.ip = '*' # 允許訪問此服務(wù)器的 IP,星號(hào)表示任意 IP
c.NotebookApp.password = u'sha1:xxx:xxx' # 之前生成的密碼 hash 字串
c.NotebookApp.open_browser = False # 運(yùn)行時(shí)不打開本機(jī)瀏覽器
c.NotebookApp.port = 12035 # 使用的端口
c.NotebookApp.enable_mathjax = True # 啟用 MathJax
- 由于大家公用的服務(wù)器录豺,我并沒有管理員權(quán)限苍匆,不能將jupyter notebook添加為系統(tǒng)級(jí)別的服務(wù)瑰钮。我們只需執(zhí)行如下命令就可以方便的在本地調(diào)用jupyter notebook了(服務(wù)器不會(huì)經(jīng)常重啟)冒滩。
nohup jupyter notebook > notebook.file 2>&1 &
調(diào)用方式:在本地瀏覽器中輸入服務(wù)器地址:設(shè)置的端口號(hào)
即可。例如:165.32.65.109:7060
Jupyter 優(yōu)化
-
更換主題
- 對(duì)于程序員來說浪谴,Jupyter默認(rèn)的白色背景不是很友好开睡,為了和黑色的Pycharm更加搭配因苹,可以先執(zhí)行如下命令安裝其他主題
pip install jupyterthemes --user
- 安裝好之后的操作很簡單,如下例所示篇恒。
# list available themes # onedork | grade3 | oceans16 | chesterish | monokai | solarizedl | solarizedd # 列出所有可用的主題 jt -l # select theme... # jt -t 主題名 jt -t chesterish # restore default theme # NOTE: Need to delete browser cache after running jt -r # If this doesn't work, try starting a new notebook session. # 恢復(fù)默認(rèn)主題 jt -r
- 對(duì)于程序員來說浪谴,Jupyter默認(rèn)的白色背景不是很友好开睡,為了和黑色的Pycharm更加搭配因苹,可以先執(zhí)行如下命令安裝其他主題
-
自動(dòng)代碼補(bǔ)全
雖然Jupyter也可以代碼補(bǔ)全扶檐,但是總是需要多此一舉的按一個(gè)Tab鍵,與PyCharm風(fēng)格不搭配胁艰。
-
方法一:執(zhí)行
ipython profile create
命令款筑,vim ~/.ipython/profile_default/ipython_config.py
,修改成如下樣子腾么。重啟jupyter后生效## Activate greedy completion PENDING DEPRECTION. this is now mostly taken care # of with Jedi. # # This will enable completion on elements of lists, results of function calls, # etc., but can be unsafe because the code is actually evaluated on TAB. c.Completer.greedy = True ## Experimental: restrict time (in milliseconds) during which Jedi can compute # types. Set to 0 to stop computing types. Non-zero value lower than 100ms may # hurt performance by preventing jedi to build its cache. c.Completer.jedi_compute_type_timeout = 400 ## Experimental: Use Jedi to generate autocompletions. Off by default. c.Completer.use_jedi = True
方法二:安裝如下插件奈梳,如果報(bào)錯(cuò),還需要更新配置一些包環(huán)境:
pip install jupyter_contrib_nbextensions --user
pip install jupyter_nbextensions_configurator --user
pip install --upgrade ipykernel --user
chmod 777 ~/.local/share/jupyter/
pip install --upgrade --user nbconvert
pip install --upgrade jupyter_core jupyter_client --user
總結(jié)
至此解虱,PyCharm 和 Jupyter 都已經(jīng)配置完畢攘须。今后PyCharm仍然是主力的代碼編輯工具。但在工程構(gòu)建過程中殴泰,免不了許多中間結(jié)果需要分析和查看阻课,這個(gè)時(shí)候Jupyter就可以派上用場。進(jìn)行輕量的模塊化分析任務(wù)艰匙。另外限煞,Jupyter也可以打開文本文件進(jìn)行編輯(可以自由選擇Vim/Sublime等編輯模式),這樣就不用使用WinSCP來單獨(dú)查看文件员凝;Jupyter也可以打開Terminal署驻,這樣我們就不用再單獨(dú)使用Xshell,Xming等軟件健霹。釋放本地內(nèi)存旺上,
我們只需要開啟瀏覽器和PyCharm就可以方便交互服務(wù)器,進(jìn)行代碼的版本控制糖埋,以及進(jìn)行數(shù)據(jù)分析宣吱。接下來可以更加愉快的干活了!