ERPNext遠端開發環境配置方法
前言
同志們,燒友們,ERPNext遠端開發調試如何配置的文檔,截止到2021/01/29日前,在WWW上沒有啊,不管是國外網站、國內網站,我是沒有找到,找得頭暈眼花也沒有啊,翻牆也不知道行不行,這是斐浦公司花了兩天時間啃出來的,屬於原創啊,開發的老弟、小弟們,興奮吧,開發效率、性能大幅提升啊,隨便單步進啊出啊,這個研究的哥們有貢獻啊,拿磚頭炸他,暈,錯了,是鮮花鮮花,來來來......
背景
- 本文集成開發環境:採用Pycharm專業版,版本為2018.3.2 X64;
- 關於Pycharm如何安裝和獲取許可,去百度吧,百度不出來就是菜鳥啊,罵我你也是菜鳥,管不了你了。
- 下文介面截圖其它版本略有差異;
- Pycharm專業版:專業、高效;
- Ubuntu+Pycharm+ERPNext不足
如果在Ubuntu環境安裝Pycharm開發環境,對開發環境配置要求挺高:
- Ubuntu圖形環境對記憶體要求要比純字元介面的要高很多;
- ERPNext12、13:建議最低記憶體2-4M,13版本2M記憶體跑起來明顯不如12版本快,建議2M雲平臺伺服器升級13版本要慎重;
- Pycharm運行起來常駐內存在600—900M之間(Windows環境看的,不能瞎說,Ubuntu環境懶得開起來看了,反正不少);
所以一運行卡呀卡呀;
另外Ubuntu環境開發,上網、QQ、微信等等要再搞一套方便嗎? 反正我是不方便;
受不了了,就往下看吧!
遠端調試
新建專案

新增ERPNext專案,目錄對應伺服器環境的Frappe用戶目錄,需要使用到伺服器的目錄如下:
/frappe/frappe-bench
/frappe/.local
遠端環境創建後會在/frappe路徑下自動生成.pycharm_helpers目錄;
稍後在/frappe路徑下創建pycharm_debug目錄;
暫時記錄這些,以後再安裝時再修正調整;
伺服器上需要安裝外掛程式:pydevd(pydevd-pycharm這個不裝,根據Pycharm版本)
稀里糊塗幾個參考文檔一頓亂搞,反正搞出來了,不確定哪些步驟有冗餘,有時間需要重裝時再確認;

在本地創建F:Frappe,(本地路徑需要從伺服器同步下來,最好與伺服器一樣,都這麼說,就這麼照做)
遠端伺服器
- 創建SFTP
選擇Tools--Deployment—Configuration
不同Pycharm版本有點差異,知道意思找到就行;

點擊"+",選擇SFTP

創建新的伺服器名:ERPNext13

在下圖輸入:伺服器位址、安裝ERPNext的使用者名和密碼,勾選保存密碼,點擊測試連接,如果連接成功,自動獲取該用戶路徑/home/frappe,
Web Server URL的埠號沒有特意規定好像,隨便來一個;
SSH埠號根據伺服器安裝時填寫:22或修改後的3022

如下圖路徑對應:

如下圖剔除伺服器不需同步的路徑:(下圖路徑只是舉例)

以上設置完畢,保存應用后,就可以查看伺服器訊息;
- 查看遠端伺服器
Tools--Deployment--Browse Remote Host就可以看到你遠端主機的訊息


遠端python
Files——Settings——Python Interpreter------Project:Frappe
選擇SSH Interpreter


在下圖Project Interpreter后,點擊
,選擇Add

選擇SSH Interpreter,選擇Existing server configuration,選擇剛創建的SFTP:ERPNext13

點擊

點擊完成後,自動創建一個ERPNext13的SFTP拷貝配置,見下圖:

下一步,見下圖,取消自動同步(根據個人習慣決定是否取消)

點擊上圖資料夾圖示,設置同步目錄;

同步目錄創建如下,建議伺服器路徑選/home/frappe,別選
/home/frappe/frappe-bench

前兩步設置完見下圖:

選擇伺服器端python版本:/home/frappe/frappe-bench/env/bin/python3
這個python3,根據自己安裝ERPNext環境時python3.6(python3以上版本,這裡只是舉例)版本的名稱,設置完如下圖:

以上步驟設置保存完畢後見下圖,會顯示伺服器端python環境外掛程式的版本號,點擊OK保存就可以了;

配置終端編碼
設定編寫代碼格式:
File——Settings——Tools——SSH Terminal——Default encoding改為utf-8,
修改Connection settings為SSH configuration,並下拉選擇剛才創建的SFTP拷貝(其實不是拷貝也一樣,因為配置一樣的)。


配置檔編碼
File——Settings——Editor------File Encodings
改為utf-8

自動上傳
設置是否自動同步:Tools->Deployment->Options

自動上傳有變更的代碼到伺服器選擇:Always,根據自己喜好選擇

Pycharm_debug包
解壓C:Program FilesJetBrainsPyCharm 2018.3.2debug-eggspycharm-debug-py3k.egg檔到f:Frappepycharm_debug
pycharm-debug.egg對應python2;
pycharm-debug-py3k.egg對應python3;
ERPNext12、13版本均採用python3;

同步f:Frappepycharm_debug到伺服器;
備註:
沒有使用下列方法安裝伺服器pycharm-debug:
1)用easy_install pycharm-debug-py3k.egg報錯;
sudo easy_install pycharm-debug-py3k.egg
Debug配置
如下圖,添加Debug配置:

點擊"+"

選擇Python RemoteDebug,不同Pycharm版本有差別
見下圖

Name:ERPNext13_debug
伺服器位址、埠、路徑參考下圖:

點擊OK保存
安裝pydevd
sudo pip install pydevd

在專案主py檔裡新增:
import pydevd
pydevd.settrace('192.168.18.6', port=8000, stdoutToServer=True, stderrToServer=True)
說明:
沒有用pydevd-pycharm,應該是版本不同,安裝的包不同,Pycharm2018里提示的代碼是pydevd
sudo pip install pydevd-pycharm
創建遠端連接檔
在F:Frappe目錄下創建 PycharmRemoteDebug.py
PycharmRemoteDebug.py
import sys sys.path.append('./pycharm_debug')import pydevdif __name__ != '__main__': pydevd.settrace('192.168.18.6',port=8000, stdoutToServer = True, stderrToServer = True, suspend = False) |
這個文件是關鍵,必須要啊;
這裡需要添加解壓上傳到伺服器的pycharm_debug包路徑;
創建測試檔
在F:Frappe目錄下創建 Main.py
Main.py
import sys sys.path.append('./pycharm_debug')import pydevdif __name__ != '__main__': pydevd.settrace('192.168.18.6',port=8000, stdoutToServer = True, stderrToServer = True, suspend = False) |
設置斷點
設定端點:

啟動debug
參考下圖,啟動debug:選擇ERPNext13_debug,點小蟲子

終端視窗顯示等待,見下圖:

運行代碼
在伺服器終端視窗運行代碼,如下圖:
Python3 Main.py
運行完就是停住狀態,參考以下兩圖


查看視窗
再看Pycharm調試窗口,參考如下:

ERPNext遠端
- 遠端同步
手動同步一下目錄:
/frappe/frappe-bench
/frappe/.local
/frappe/pycharm_debug
/frappe/Main.py(這個就是測試用,用完刪)
/frappe/PycharmRemoteDebug.py(這個文件以後挪個地方)
下圖目錄是否要同步,不知道是否必須,自己試,我是同步下來了,以後再確認,先能跑起來;
- 修改honcho
拷貝一個honche,新名為honcho_debug
新增以下兩行:
sys.path.append('/home/frappe')
import PycharmRemoteDebug
- 設置端點
參考前文
- 啟動debug
同上
- 啟動ERPNext服務
cd ~/frappe-bench
bench start
回到調試視窗即可單步跟蹤了;

本機調試
以下三個方法是官網論壇上的,沒有驗證過,因為我用不到;
本機就不用解釋了吧;
配置方法一
Configuration:
script: /home/frappe/.local/bin/honcho
Parameters: start
Environment Variables: PYTHONUNBUFFERED=1
Working directory: /home/frappe/frappe-bench
√add content roots to PYTHONPATH
√add source roots to PYTHONPATH
√Emulate terminal in output console
Tips:
使用下面命令可以啟動服務
cd frappe-bench
~/.local/bin/honcho start
或
bench start
這兩條命令都可以啟動服務;
配置方法二
In my pycharm I do this:
Start a Python Project
In Run/Debug configurations, I add: a Python Deftault...
On a new Python configuration:
Script: /usr/local/bin/bench,這個路徑下沒有bench,可能使用easy_install方式安裝的才有
Script parameters: start
Working directory: /Users/fellipeh/Developer/python/frappe/frappe-bench
Don’t forget to set the correct virtualenv on PyCharm Configuration... set the “env” folder on frappe-bench directory.


配置方法三
script: /home/fuekor/frappe-bench/env/bin/frappe,這個路徑下沒有frappe
script parameters: site1.local --port=8000 --serve_test
Environment Variables: PYTHONUNBUFFERED=1
python interpreter: /frappe-bench/env
working directory: /home/fuekor/frappe-bench/sites
add content path to python roots: yes
add source roots to python path: yes
聯繫方式
ERPNext中文社區QQ群:641514022