首页 » Web前端 » delphiphpdll技巧_Python4Delphi安装

delphiphpdll技巧_Python4Delphi安装

访客 2024-12-03 0

扫一扫用手机浏览

文章目录 [+]

当时没在意,紧张是由于的缘故原由是我自己不会 Python(不知道为什么便是不喜好缩进式层及编码),其余便是移植性的问题,当时完备不知道怎么把两者领悟起来

最近由于事情中须要用到 Python 的内容,迫不得已只能学习了,然后顺带着学习一下这个 Delphi 的控件

delphiphpdll技巧_Python4Delphi安装 delphiphpdll技巧_Python4Delphi安装 Web前端

P4D 先容

Python for Delphi(P4D)是一组免费组件,它们将 PythonDLL 包装成 Delphi 和 Lazarus(FPC)。
它们让您可以轻松地实行 Python 脚本、创建新的 Pythons 模块和新的 Pyphon 类型。
您可以将 Python 扩展创建为 DLL 等

delphiphpdll技巧_Python4Delphi安装 delphiphpdll技巧_Python4Delphi安装 Web前端
(图片来自网络侵删)

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

先说一下兼容性,从官方先容不丢脸出,它支持 Delphi 和 Lazarus。
同时从官方的 issues 中也可以看到在 Delphi7 上也可以利用

Python 的上风是第三方库足够丰富,但是做 PC 端界面程序很明显不是特殊方便,虽然它有 pyqt 之类的库。

Delphi 的上风和 Python 比拟的话正好相反。
如果能够将 Delphi 和 Python 结合的话可以办理很多问题(虽然这种玩法算是偏锋中的偏锋)

安装 P4D

官方没有很好的入门文档,我算是补全了这方面的空缺吧,当然英语比较好的可以直接按照官方文档安装

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

先决条件是安装 Python3,这里不建议利用 Python2.x,官方都已经不建议了。
详细安装步骤就不说了(这个可以自行百度)

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

下载 GitHub 源码(直接克隆仓库即可):git clone https://github.com/pyscripter/python4delphi.git

须要关注的便是我标红的 3 个目录

打开目录$python4delphi_home\Packages\Delphi\Delphi 10.4+ 当然须要根据自己 Delphi 的版本,我利用的是 DelphiXE10.4.2

打开项目组文件 P4DComponentSuite.groupproj,在须要安装的项目上右击,如果须要利用 Fmx 控件的话它也须要安装,由于我不该用以是我没装

至此控件安装完成

运行 HelloWorld 程序

打开目录$DelphiLibrary_home\python4delphi\Demos,找到Demos_01_to_34.groupproj 项目组文件并用工具打开

打开项目之后先不要焦急运行,我们须要在 Library Path 中关联以下源码

如果看到下面的画面表示运行成功

移植性

对付这种代码的移植性分两种情形说,未含第三方模块和包含第三方模块。
本日先说未含第三方的情形

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

起初我各种百度、Google 想找点教程,可惜资料少的可怜。
末了还是群里的朋友 yaHa 指示搞定的,随后我在官方示例 demodll 中也看到了干系代码

function PyInit_demodll : PPyObject;begin Result := nil; try gEngine := TPythonEngine.Create(nil); //自动初始化 gEngine.AutoFinalize := False; //已知的上一个版本 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 环境下顺利运行

标签:

相关文章

互联网地址变革,未来网络世界的导航之光

随着互联网技术的飞速发展,网络地址(IP地址)这一基础性资源逐渐成为制约网络发展的重要因素。为了应对全球互联网地址资源枯竭的困境,...

Web前端 2024-12-05 阅读0 评论0

互联网时代的网站内容优化步骤

随着互联网的快速发展,网站已经成为企业和个人展示形象、传播信息、拓展业务的重要平台。网站内容作为网站的核心,其质量直接影响着网站的...

Web前端 2024-12-05 阅读0 评论0