久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python4Delphi安裝

 網(wǎng)摘文苑 2022-11-21 發(fā)布于新疆

起因

很早之前曾經(jīng)有人給我提到過這個(gè)

文章圖片1

當(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 等

GitHub 地址:
https://github.com/pyscripter/python4delphi

先說一下兼容性,從官方介紹不難看出,,它支持 Delphi 和 Lazarus,。同時(shí)從官方的 issues 中也可以看到在 Delphi7 上也可以使用

Python 的優(yōu)勢是第三方庫足夠豐富,,但是做 PC 端界面程序很明顯不是特別方便,,雖然它有 pyqt 之類的庫。

Delphi 的優(yōu)勢和 Python 對比的話恰恰相反,。如果能夠?qū)?Delphi 和 Python 結(jié)合的話可以解決很多問題(雖然這種玩法算是偏鋒中的偏鋒)

安裝 P4D

官方?jīng)]有很好的入門文檔,,我算是補(bǔ)全了這方面的空白吧,當(dāng)然英語比較好的可以直接按照官方文檔安裝

官方 wiki:
https://github.com/pyscripter/python4delphi/wiki/Installation

先決條件是安裝 Python3,,這里不建議使用 Python2.x,,官方都已經(jīng)不建議了。具體安裝步驟就不說了(這個(gè)可以自行百度)

下載地址:
https://www./ftp/python/3.10.4/python-3.10.4-amd64.exe

下載 GitHub 源碼(直接克隆倉庫即可):git clone
https://github.com/pyscripter/python4delphi.git

文章圖片2

需要關(guān)注的就是我標(biāo)紅的 3 個(gè)目錄

打開目錄$python4delphi_home\Packages\Delphi\Delphi 10.4+ 當(dāng)然需要根據(jù)自己 Delphi 的版本,,我使用的是 DelphiXE10.4.2

打開項(xiàng)目組文件
P4DComponentSuite.groupproj
,,在需要安裝的項(xiàng)目上右擊,如果需要使用 Fmx 控件的話它也需要安裝,,因?yàn)槲也皇褂盟晕覜]裝

文章圖片3

至此控件安裝完成

運(yùn)行 HelloWorld 程序

打開目錄$DelphiLibrary_home\python4delphi\Demos,找到Demos_01_to_34.groupproj 項(xiàng)目組文件并用工具打開

打開項(xiàng)目之后先不要著急運(yùn)行,,我們需要在 Library Path 中關(guān)聯(lián)以下源碼

文章圖片4
文章圖片5

如果看到下面的畫面表示運(yùn)行成功

文章圖片6

移植性

對于這種代碼的移植性分兩種情況說,未含第三方模塊和包含第三方模塊,。今天先說未含第三方的情況

├─py| ├─hell.py└─python310 ├─python310.dll └─python310.zip |-Project1.exe

起初我各種百度,、Google 想找點(diǎn)教程,可惜資料少的可憐,。最后還是群里的朋友 yaHa 指點(diǎn)搞定的,,隨后我在官方示例 demodll 中也看到了相關(guān)代碼

function PyInit_demodll : PPyObject;begin  Result := nil;  try    gEngine := TPythonEngine.Create(nil);    //自動(dòng)初始化    gEngine.AutoFinalize := False;    //已知的上一個(gè)版本    gEngine.UseLastKnownVersion := False;    //使用的版本    gEngine.RegVersion := '3.7';  //<-- Use the same version as the python 3.x your main program uses    //API 版本    gEngine.APIVersion := 1013;    //DLL 文件    gEngine.DllName := 'python37.dll';    //加載 Python 的 DLL    gEngine.LoadDll;    gModule := TPythonModule.Create(nil);    gModule.Engine := gEngine;    gModule.ModuleName := 'demodll';    gModule.AddMethod( 'add', @Add, 'add(a,b) -> a+b' );    gModule.Initialize;    Result := gModule.Module;  except  end;end;

從代碼中大概可以看出,初始加載 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)行

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多