QGIS3.10配置python外掛開發環境

xiaozy12發表於2020-10-16

本文內容為QGIS3.x以上版本在windows下進行python外掛開發環境及除錯環境的配置,詳細描述如何使用Eclipse + PyDev搭建PyQGIS外掛開發的除錯環境。官網中有相關的配置文件,但我想吐槽的是官網文件寫得很簡單而且挖了很多坑。本文是在官網的基礎上,同時借鑑別人寫的配置文件,再根據自己的環境部署進行編寫,更加詳細,意在填補官網文件挖的各式各樣的坑。

PyQGIS安裝

在windows系統下,QGIS安裝包會自動安裝PyQGIS模組,如果使用Linux或者Mac系統的話,則需要單獨安裝。(本文重點講述Windows系統,Linux和Mac系統環境配置請參見QGIS官方網站的幫助文件)

環境變數設定

1.PATH 變數的配置

使用OSGeo4W的,以下設定:
…\OSGeo4W64\apps\Python37;
…\OSGeo4W64\bin;
…\OSGeo4W64\apps\qgis\bin;

使用安裝包的,以下設定(本教程示例將使用安裝包方式):
…\QGIS 3.10\apps\Python37;
…\QGIS 3.10\bin;
…\QGIS 3.10\apps\qgis\bin;

先設定系統變數path,要把qgis目錄下的python37資料夾也放進去(切記要放到最前面,防止被其他地方安裝的python覆蓋),如圖:
在這裡插入圖片描述
需要注意的是,紅框內最上面的兩個路徑最好放在PATH變數的最前面,否則其他路徑下存在Python或者QGIS模組的話,會引起衝突。

2. PYTHONPATH 變數的配置

PYTHONPATH變數的配置是為了讓Python能夠找到PyQGIS的各種依賴模組,保證程式碼中的模組正常使用。
主要有幾個路徑需要配置(注意下面的路徑是你QGIS安裝的位置,如果不是,你需要自行更改)
D:\Program Files\QGIS 3.10\apps\Python37;
D:\Program Files\QGIS 3.10\apps\Python37\lib;
D:\Program Files\QGIS 3.10\apps\qgis-ltr\bin;
D:\Program Files\QGIS 3.10\apps\qgis-ltr\python;
D:\Program Files\QGIS 3.10\apps\qgis-ltr\python\qgis;
D:\Program Files\QGIS 3.10\apps\Python37\lib\site-packages;
D:\Program Files\QGIS 3.10\apps\Python37\DLLs;

這是我的本地環境截圖,供大家參考。
在這裡插入圖片描述
同樣,PYTHONHOME設定如下,注意那個路徑要設定到python37下,而不是qgis的bin下:
D:\Program Files\QGIS 3.10\apps\Python37\

環境配置檢查

完成了上述的配置之後,通過從命令列視窗輸入python,並import qgis.core, import qgis.user, import console等,如果沒有報錯,就說明環境配置好了。
反之,如果輸出找不到模組之類的錯誤,就應該繼續新增相應路徑到PYTHONPATH裡面。
在這裡插入圖片描述
按照上文所述的操作之後,基本上就可以開始編寫PyQGIS程式了。但是程式設計過程中,除錯是一個非常方便的工具,為了使用偵錯程式,我們需要用到eclipse+pydev。

PyDev外掛安裝與配置

首先下載並安裝Eclipse,在Eclipse的選單欄上選擇“Help -> Install New Software”。
在這裡插入圖片描述
在彈出視窗的“Work with”欄,填寫網址 http://www.pydev.org/updates 。有些版本的Eclipse可以直接選擇“Work with”這一欄的下拉按鈕,彈出PyDev的安裝網址。總之,填上就行。然後再彈出的資源裡面選擇“PyDev for Eclipse”就可以了,剩下的“PyDev for Eclipse Developer Resources”以及“PyDev Mylyn Integration”選擇性安裝即可,不是必須
在這裡插入圖片描述
需要注意的是,安裝需要Java 8的支援,否則裝上的PyDev外掛不會出現在選單欄上。

配置PyQGIS直譯器

開啟Eclipse,在選單欄中選擇“Window -> Preferences”,開啟選項配置視窗。
在選項配置視窗左邊樹形選單依次選擇 “PyDev -> Interpreters -> Python Interpreter”,在調出的Python Interpreters皮膚,單擊“New”按鈕,新建一個直譯器,並按照如下圖所示填寫QGIS安裝路徑下的 python.exe 位置。
在這裡插入圖片描述
然後,在Forced Builtins皮膚新建一個“qgis”變數,這樣在寫程式碼的時候會有QGIS庫的自動補全功能。
在這裡插入圖片描述

配置QGIS桌面端

qgis桌面端的配置主要包含2個部分,一個是安裝外掛,另一個是應用程式環境變數配置。

外掛安裝

要安裝除錯相關的外掛,必須現在QGIS外掛管理器中,開啟“啟用實驗外掛”這個選項,否則在外掛管理器中是看不到除錯相關的外掛的。
依次選擇QGIS選單欄“Plugins ­> Manage and Install Plugins”,在彈出的視窗中選擇“Settings ­> Show also experimental plugins”,如下圖:
在這裡插入圖片描述
接下來搜尋並安裝Remote Debug外掛和Reload外掛。其中,Remote Debug外掛是為了連線Eclipse進行遠端除錯的。而Reload外掛則是用於重新載入外掛,避免重啟QGIS來達到過載的目的。
在這裡插入圖片描述

應用程式執行環境配置(重點)

非常重要的一點是,要把PyDev外掛中的pysrc路徑加入到QGIS執行環境中。在我的的電腦上,這個路徑是:
D:\eclipse\plugins\org.python.pydev.core_7.6.0.202006041357\pysrc

這個應用程式執行環境可以在QGIS桌面端的“Settings ­> Options ­> System ­>
Environment”中配置,如下圖:
在這裡插入圖片描述

聯動除錯

在Eclipse中的右上角,點選箭頭所指圖示,新增Debug選項,open後就在右邊出現debug,點選它就會切換到除錯檢視。
在這裡插入圖片描述
在這裡插入圖片描述
在你的除錯程式碼中打上一個短點(這裡我把斷點打在了程式碼檔案的33行)。
在這裡插入圖片描述
選擇選單欄“PyDev -> Start Debug Server”,當Console視窗出現“Debug Server at port: xxxx”出現的時候,就表示當前除錯伺服器已經啟動了。
在這裡插入圖片描述
在這裡插入圖片描述
注意:有可能在PyDev裡找不到Start Debug Server,這是因為在Action Set Availability中沒有啟用PyDev Debug選項,選擇選單欄“Windows -> Customize Persperctive->Action Set Availability,勾選PyDev Debug,然後點選Apply and Close:
在這裡插入圖片描述
切換到QGIS軟體,選擇Remote Debug外掛,在pydevd path裡填上路徑:D:\eclipse\plugins\org.python.pydev.core_7.7.0.202008021154\pysrc
並單擊connect按鈕,當QGIS窗體彈出連線成功的訊息通知,就表示連線上除錯伺服器了。
在這裡插入圖片描述
在這裡插入圖片描述

這時候,單擊“Plugins -> HelloWorld”外掛,切換到Eclipse就會看到,程式碼在斷電處停下來了,接下來就可以使用Eclipse的除錯功能進行程式碼除錯了。
在這裡插入圖片描述

相關文章