配置便捷的開(kāi)發(fā)環(huán)境(PyCharm & Jupyter)

由于在PyCharm中進(jìn)行統(tǒng)計(jì)整理數(shù)據(jù)、畫(huà)圖等操作有諸多的不便。在本地的jupyter notebook進(jìn)行處理又顯得步驟繁瑣(傳輸文件),故萌生在服務(wù)器搭建jupyter notebook的想法。兩種工具優(yōu)勢(shì)互補(bǔ),從而最大程度上集中注意力在項(xiàng)目本身,提升開(kāi)發(fā)效率。

原文發(fā)布于個(gè)人博客(好望角),并在博客持續(xù)修改更新,此處可能更新不及時(shí)。


“工欲善其事,必先利其器”,接下來(lái)看看如何用PyCharm和Jupyter配置最便捷的python開(kāi)發(fā)環(huán)境。

PyCharm

image

一打開(kāi)軟件界面,滿滿的科幻感迎面撲來(lái)。用色塊構(gòu)建的魔幻畫(huà)面好似一張變形金剛的面龐。最新的版本加入了默認(rèn)的Vim編輯模式,讓強(qiáng)大的PyCharm更如猛虎添翼一般。

基礎(chǔ)配置

打開(kāi)設(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),在程序開(kāi)發(fā)過(guò)程中,有一些代碼基本沒(méi)有變化,而且我們會(huì)經(jīng)常性的重復(fù)使用。那么,這種傻傻很麻煩的事情最適合計(jì)算機(jī)來(lái)自動(dòng)完成了。顯然,開(kāi)發(fā)PyCharm的程序員小哥想到了這一用戶痛點(diǎn)。

File -> Editor -> File and Code Templates 中,我們可以將常用的文件類型中的一些常用代碼寫入該類型文件的默認(rèn)模板中,例如。

# -*- coding: utf-8 -*-

除此之外,還可以在文件開(kāi)頭添加一些注釋信息。如下所示:

image

版本控制

一個(gè)好的開(kāi)發(fā)環(huán)境不可能沒(méi)有版本控制系統(tǒng)。

PyCharm內(nèi)置了CVS、Git、Mercurial、Subversion等多種版本控制工具,我們只需要簡(jiǎn)單的配置即可使用。

從github上Clone 代碼,上傳保存,進(jìn)行版本控制,多人協(xié)同開(kāi)發(fā),統(tǒng)統(tǒng)可以在軟件內(nèi)輕松地完成。

遠(yuǎn)程調(diào)試

這是一個(gè)超級(jí)良心的免費(fèi)功能,我相信即使這個(gè)功能收費(fèi),也會(huì)有很多程序員小哥繼續(xù)使用PyCharm。在其他的地方寫代碼,我們都需要在本地調(diào)試好,再上傳服務(wù)器。出問(wèn)題后,再次修改,再次上傳,非常浪費(fèi)時(shí)間。那么如何簡(jiǎn)化本地代碼和服務(wù)器代碼之間的溝通工作呢?PyCharm也幫我們內(nèi)置好了。

Tools -> Deployment -> Configurtion中可以配置好多臺(tái)服務(wù)器,如果服務(wù)器中的python環(huán)境配置良好,我們就不需要再單獨(dú)在本地配置一遍。配置如下所示:

image

在對(duì)應(yīng)的位置填寫好服務(wù)器的位置,自己的用戶名和密碼,以及想要打開(kāi)的根目錄(節(jié)省重復(fù)打開(kāi)文件夾的時(shí)間)。

第二個(gè)選項(xiàng)卡Mappings中配置本地項(xiàng)目和服務(wù)器項(xiàng)目對(duì)應(yīng)的映射關(guān)系。這里有個(gè)需要注意的地方,建議只將代碼和訓(xùn)練語(yǔ)料分開(kāi)存儲(chǔ),不要使訓(xùn)練語(yǔ)料成為映射項(xiàng)目的一部分,加快加載速度。在第一次配置好開(kāi)發(fā)環(huán)境的時(shí)候,需要將服務(wù)器的一些文件下載到本地,需要稍等幾分鐘,以后就很幸福了!

Tools -> Deployment -> Configurtion中選擇本地文件的上傳方式,我這里將Ctrl+S設(shè)置為本地保存并上傳服務(wù)器。

Jupyter-notebook

對(duì)于jupyter notebook來(lái)說(shuō),它的缺點(diǎn)還是十分明顯的。沒(méi)有一個(gè)很好的框架,不能清晰的構(gòu)建大型項(xiàng)目。也不曾擁有IDECtrl+點(diǎn)擊函數(shù)名就可以跳轉(zhuǎn)的方便功能,導(dǎo)致閱讀代碼吃力。

但同樣的,它的對(duì)于PyCharm的優(yōu)點(diǎn)也是無(wú)可替代的。

  • PyCharm簡(jiǎn)直是一個(gè)科學(xué)計(jì)算的神奇,在做數(shù)據(jù)挖掘的時(shí)候,代碼和報(bào)告(支持latex公式)高度融合,無(wú)需二次撰寫。

  • 在處理數(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)配置好了。

  • 打開(kāi)Ipython,輸入如下兩行代碼后,會(huì)生成一個(gè)字符串,例如”sha1:9305015210b4:32cad364c85e7f7a13b9efa137cfadf633cc62d“。請(qǐng)復(fù)制出來(lái)暫時(shí)保存,稍后會(huì)使用。

from notebook.auth import passwd
passwd()
  • 如果~/.jupyter路徑下沒(méi)有 jupyter_notebook_config.py ,則輸入如下命令新建它。
jupyter notebook --generate-config
  • 新產(chǎn)生的文件中的所有內(nèi)容都以注釋的形式存在,直接在文件末尾加入如下幾行代碼,并根據(jù)自己的環(huán)境調(diào)整路徑。
c.NotebookApp.ip = '*'  # 允許訪問(wèn)此服務(wù)器的 IP,星號(hào)表示任意 IP
c.NotebookApp.password = u'sha1:xxx:xxx' # 之前生成的密碼 hash 字串
c.NotebookApp.open_browser = False # 運(yùn)行時(shí)不打開(kāi)本機(jī)瀏覽器
c.NotebookApp.port = 12035 # 使用的端口
c.NotebookApp.enable_mathjax = True # 啟用 MathJax
  • 由于大家公用的服務(wù)器,我并沒(méi)有管理員權(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ì)于程序員來(lái)說(shuō),Jupyter默認(rèn)的白色背景不是很友好,為了和黑色的Pycharm更加搭配,可以先執(zhí)行如下命令安裝其他主題 pip install jupyterthemes --user
    • 安裝好之后的操作很簡(jiǎn)單,如下例所示。
    # 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
    
  • 自動(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)建過(guò)程中,免不了許多中間結(jié)果需要分析和查看,這個(gè)時(shí)候Jupyter就可以派上用場(chǎng)。進(jìn)行輕量的模塊化分析任務(wù)。另外,Jupyter也可以打開(kāi)文本文件進(jìn)行編輯(可以自由選擇Vim/Sublime等編輯模式),這樣就不用使用WinSCP來(lái)單獨(dú)查看文件;Jupyter也可以打開(kāi)Terminal,這樣我們就不用再單獨(dú)使用Xshell,Xming等軟件。釋放本地內(nèi)存,

我們只需要開(kāi)啟瀏覽器和PyCharm就可以方便交互服務(wù)器,進(jìn)行代碼的版本控制,以及進(jìn)行數(shù)據(jù)分析。接下來(lái)可以更加愉快的干活了!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、什么是Jupyter Notebook? 1. 簡(jiǎn)介 Jupyter Notebook是基于網(wǎng)頁(yè)的用于交互計(jì)算...
    Raxxie閱讀 1,454,323評(píng)論 36 705
  • 原文鏈接 《Python數(shù)據(jù)分析》(Python for Data Analysis, 2nd Edition)第...
    李紹俊閱讀 8,795評(píng)論 0 5
  • 給初學(xué)者的 Jupyter Notebook 教程 Jupyter Notebook 是一個(gè)非常強(qiáng)大的工具,常用于...
    Jancd閱讀 26,634評(píng)論 2 30
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,724評(píng)論 19 139
  • 年少輕狂不知路在何方, 風(fēng)雨飄搖只當(dāng)它是春至末寒霜。 年少輕狂不知時(shí)光幾許, 紅日升落只當(dāng)它是朝夕霞光。 年少輕狂...
    序小木閱讀 730評(píng)論 17 11

友情鏈接更多精彩內(nèi)容