Python For Delphi 闪退解决 及 版本切换绿色部署方法

使用delphi调用python运行脚本可以使用python4delphi控件,这个控件开源,支持到最新的3.8版本

python下载地址:https://www.python.org/downloads/

python4delphi下载地址:https://github.com/pyscripter/python4delphi

在选安装好python及python4delphi控件时,运行Demos\Demo01,编译好运行或部署到新机子时可能出现闪退,在调试时发现 

出在TPythonEngine.Initialize的Py_Initialize上面,经了解后发现是环境问题!

解决方法在PythonEngine控件的OnBeforeLoad事件中加入PythonEngine1.SetPythonHome(PythonEngine1.DllPath);

绿化方法:

 解压python2.7包装包或使用python3.8的embed包在某个目录下,在程序中动态设置,可以达到绿化的效果及减少外部干扰处作.同时也可以进行版本切换.

如下,切换2.7和3.8的方式

PythonEngine的AutoLoad设置为false;

以下方式通过ComboBox1 切换

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  if PythonEngine1.Initialized then
  begin
    PythonEngine1.Free;
  end;
  PythonEngine1:=TPythonEngine.Create(self);
  PythonEngine1.IO:=PythonGUIInputOutput1;
  if ComboBox1.ItemIndex=0 then 
  begin
    PythonEngine1.DllName:='python27.dll';
    edtPythonPath.Text:='D:\python27';
  end
  else
  begin
    PythonEngine1.DllName:='python38.dll';
    edtPythonPath.Text:='D:\python38';
  end;

  PythonEngine1.DllPath:=edtPythonPath.Text;
  PythonEngine1.SetPythonHome(PythonEngine1.DllPath);
  PythonEngine1.LoadDll;
end;

--cml2030

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值