起因很早之前曾經(jīng)有人給我提到過這個(gè) 當(dāng)時(shí)沒在意,,主要是因?yàn)榈脑蚴俏易约翰粫?huì) Python(不知道為什么就是不喜歡縮進(jìn)式層及編碼),,另外就是移植性的問題,當(dāng)時(shí)完全不知道怎么把兩者融合起來 最近因?yàn)楣ぷ髦行枰玫?Python 的內(nèi)容,,迫不得已只能學(xué)習(xí)了,,然后順帶著學(xué)習(xí)一下這個(gè) Delphi 的控件 P4D 介紹Python for Delphi(P4D)是一組免費(fèi)組件,,它們將 PythonDLL 包裝成 Delphi 和 Lazarus(FPC)。它們讓您可以輕松地執(zhí)行 Python 腳本,、創(chuàng)建新的 Pythons 模塊和新的 Pyphon 類型,。您可以將 Python 擴(kuò)展創(chuàng)建為 DLL 等
先說一下兼容性,從官方介紹不難看出,,它支持 Delphi 和 Lazarus,。同時(shí)從官方的 issues 中也可以看到在 Delphi7 上也可以使用 Python 的優(yōu)勢是第三方庫足夠豐富,,但是做 PC 端界面程序很明顯不是特別方便,,雖然它有 pyqt 之類的庫。 Delphi 的優(yōu)勢和 Python 對比的話恰恰相反,。如果能夠?qū)?Delphi 和 Python 結(jié)合的話可以解決很多問題(雖然這種玩法算是偏鋒中的偏鋒) 安裝 P4D官方?jīng)]有很好的入門文檔,,我算是補(bǔ)全了這方面的空白吧,當(dāng)然英語比較好的可以直接按照官方文檔安裝
先決條件是安裝 Python3,,這里不建議使用 Python2.x,,官方都已經(jīng)不建議了。具體安裝步驟就不說了(這個(gè)可以自行百度)
下載 GitHub 源碼(直接克隆倉庫即可):git clone
打開目錄$python4delphi_home\Packages\Delphi\Delphi 10.4+ 當(dāng)然需要根據(jù)自己 Delphi 的版本,,我使用的是 DelphiXE10.4.2 打開項(xiàng)目組文件
運(yùn)行 HelloWorld 程序打開目錄$DelphiLibrary_home\python4delphi\Demos,找到Demos_01_to_34.groupproj 項(xiàng)目組文件并用工具打開 打開項(xiàng)目之后先不要著急運(yùn)行,,我們需要在 Library Path 中關(guān)聯(lián)以下源碼 如果看到下面的畫面表示運(yùn)行成功 移植性對于這種代碼的移植性分兩種情況說,未含第三方模塊和包含第三方模塊,。今天先說未含第三方的情況 ├─py| ├─hell.py└─python310 ├─python310.dll └─python310.zip |-Project1.exe 起初我各種百度,、Google 想找點(diǎn)教程,可惜資料少的可憐,。最后還是群里的朋友 yaHa 指點(diǎn)搞定的,,隨后我在官方示例 demodll 中也看到了相關(guān)代碼
從代碼中大概可以看出,初始加載 Python DLL 的核心代碼就這么多,。我處理之后的代碼如下 procedure TForm1.FormCreate(Sender: TObject);begin PythonEngine1.DllPath := ExtractFilePath(Application.ExeName); PythonEngine1.AutoLoad := False; PythonEngine1.RegVersion := '3.10'; //<-- Use the same version as the python 3.x your main program uses PythonEngine1.APIVersion := 1013; PythonEngine1.DllName := 'python310.dll'; PythonEngine1.LoadDll; PythonEngine1.SetPythonHome(ExtractFilePath(Application.ExeName)+'\python310')end; 至此基本完成了,,只要將 python310.dll 文件和 python310.zip 放到和 Delphi 的 exe 放在同一目錄下就可以完成在無 Python 環(huán)境下順利運(yùn)行 |
|