概述
資深Python工程師可以選擇的編輯器有很多,比如 Rodeo , Spider ,Eclipse,Vim,Visual Studio,Atom,Sublime Text,Jupyter等等,但是現在為什麼現在很多資深的 Pythoner 都開始擁抱 RStudio 呢?要回答這個問題,首先我們要瞭解到Python工程師的需求到底是什嗎?
需求一
資深的Pythoner不依賴於整合式開發環境,需要沈浸式編程。
真正的高手往往是不需要互動式編程環境的,他們更傾向於沈浸式編程,這些高手以前往往選擇Vim或者Sublime Text這樣的文字編輯器來解決問題。比如以前Sublime Text(Sublime Text是用Python寫的)很火爆的時候,很多Python開發人員都是Sublime Text安裝幾個外掛程式,加一個REPL和代碼高亮就開始幹活了。而一些剛剛開始學習 Python 的同學則傾向於使用諸如 PyCharm,Visual Studio 這樣的整合式開發環境來輔助編程。
資深的Python開發人員認為,過多的代碼智能提示會打斷自己的思路,提示一些並不需要的資訊反而會降低自己的效率,沈浸式編程才是最理想的選擇,代碼本身就擁有很強大的反饋機制,加入過多的協助工具功能只是畫蛇添足而已。
需求二
資深的Pythoner是免營運的全能戰士,需要掌管伺服器。
他們喜歡一個人拯救世界,從Web開發、自動化測試、自動化營運、任務調度、機器學習、硬體開發全部都要自己獨立完成,只單單開發某一個模組是沒法滿足胃口的,也永遠不會甘於只做某個環節上的螺絲釘。Python 因為本身簡潔的文法設計使得入門的門檻非常之低,這使得原本從事不同開發領域的專家都開始嘗試使用Python來再造輪子。
營運工程師 A 曾經做了一個 docker-py 來控制 Docker 的API,以支撐伺服器上數百個容器的調度與監控;資料工程師 B 現在用 Airflow 來控制 ETL 的流程以保證每天在Hadoop和Spark的洪荒之力的衝擊下,資料倉儲的治理能夠有條不紊。Web工程師 C 也用過 Django 快速開發面向消費者的網站以響應一日三變的使用者需求。爬蟲工程師 D 在用 Scrapy 爬取各大新聞網站和社交媒體的最新資訊以滿足搜尋引擎的需求。硬體工程師 E 在樹莓派上用OpenCV來調試一個臉部偵測的功能,以較低的成本完成核心功能的調試。測試工程師 F 正在用 Selenium 對各種用戶端進行自動化測試來檢測各種情況下的Bug ... 而在更多的情況下,ABCDEF 很有可能就是同一個人(被稱為全占工程師)。
對比
其實,Pythoner只需要一個沈浸式的編程環境和一個即時通向伺服器的管道。
然而,Sublime Text 只滿足了第一點;Jupyter 只滿足了第二點。直到 RStudio的出現,把二者結合了起來。
下面我們對比一下這三者的異同:
序號 功能 Sublime Text Jupyter RStudio
1 Vim模式 yes no yes
2 自訂布局 yes no yes
3 自訂快速鍵 yes no yes
4 檔案夾管理 yes yes yes
5 全域搜尋 yes no yes
6 函數跳轉 yes no yes
7 多行編輯 yes yes yes
8 多格式輸出 no yes yes
9 圖表輸出 no yes yes
10 Markdown預覽 yes yes yes
11 Terminal no yes yes
12 版本控制 yes no yes
13 專案管理 yes no yes
14 Spark串連 no yes yes
15 外掛程式系統 yes yes yes
16 Web訪問 no yes yes
17 許可權管理 no yes yes
18 變數管理 no no yes
19 多語言高亮 yes yes yes
20 叢集管理 no yes yes
21 即時儲存 yes yes yes
22 多人編輯 no no yes
23 文檔發布 yes no yes
如何正確使用RStudio
正確使用RStudio的流程是這樣的:
1. 安裝RStudio
在伺服器上使用root賬戶安裝 RStudio(並開啟8787連接埠),如果有多人協同建議不要用 Docker 安裝,如果你依然想要,這裡有相應的教程。
2. 帳號註冊
設定登入RStudio登入的帳號密碼,以及預設的使用者目錄(建議不要給到root許可權)。
adduser FinanceR # 設定新使用者名稱
passwd FinanceR # 設定該使用者的密碼
mkdir /home/FinanceR # 初始化工作空間
chmod -R FinanceR /home/FinanceR # 給工作空間賦權
3. 開啟編輯器
通過瀏覽器訪問伺服器的8787連接埠:e.g. 123.456.789.1:8787
4. 專案管理
點擊左上方建立項目按鈕,建立一個 Project 並引入Git或SVN作版本控制,拉取遠端代碼。
5. 建立檔案
建立一個空檔案夾儲存為.py尾碼檔案將提供Python代碼高亮,儲存為.sql尾碼將提供SQL代碼高亮。(還有html,c++可選)
6. 代碼執行
通過 ctrl + alt + s(source) 執行python代碼,在console中可以查看執行結果。
7. 掌管伺服器
如果需要登入伺服器,在功能表列中選擇Tool-》Shell即可進入伺服器端直接解決深層次問題。
8. 代碼排查
當程式出現一些問題,在代碼有點複雜的時候,通過 ctrl + shift + f(find) 可以全域搜尋你的程式碼片段
9. 檔案搜尋
事實上,我們你發現有時候是本地的csv檔案路徑弄錯了, 想要找到項目中某個檔案,可以通過 ctrl + shift + . 來全域檢索檔案名稱(類似 find /|grep 檔案名稱 )
10. 喜好設定
感覺預設的喜好設定不滿足個人胃口,在喜好設定中可以設定快速鍵、Vim模式、高亮、字型、snippet等等細節。我個人偏好 solarized dark 的深綠色主題。
總結
一方面,在伺服器上寫好代碼,直接在伺服器上拉取提交Git/SVN或者部署Docker鏡像,這樣就避免了在Windows/Mac下寫的代碼在伺服器上跑不通的問題,也就是說開發環境和測試環境的代碼與環境始終保持了一致性。另一方面,通過Web IDE在任何一個瀏覽器中就可以直接前往伺服器現場,不論是一台Chrome OS、 Windows XP 甚至是樹莓派。事實上,RStudio作為我的主力編輯器90%取代了Atom、Sublime Text、Jupyter等等編輯器,現在好多Python工程師都在學習如何使用它。