本文主要是介绍设置python4delphi支持python3.X,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
看不懂也要跟踪下,哪哪出问题了,嗯,是python的Py_Initialize()出问题,这行代码
Py_Initialize := Import('Py_Initialize');
咋办呢,万能的互联网啊(哪天不能上网,那是不是也活的差不多了)
网上说,一般出这个问题,是python的路径出问题了,系统环境变量里找不着python了,哦,是这样,但是我不能设置python32路径在系统变量里啊,不能为了python4delphi而毁了其它的千千万万的python代码。。。(我的系统里是不设置python路径的环境变量的,因为不是固定一个python版本)
网上说,2个办法:
“两个方法:
一个就是补全python的环境变量。
另一个就是手动设置初始化函数的搜寻路径(也就是加载路径)”
真好,可以手动临时设置,就是这个python函数Py_SetPythonHome()
那python4delphi里在哪设置呢,嗯,刚才跟踪的时候看到了
procedure SetPythonHome(const PythonHome: string);
是个public方法,为什么不publish成属性啊?
呵,这个PathHome和DLLPath一样,然后在那里调用这个方法啊,还是跟踪的时候看到了几个个事件,OnAfterLoad和 OnBeforLoad,是在Py_Initialize()前调用的,正正好,设置TPythonEngine的OnAfterLoad或OnBeforLoad:
procedure TForm1.PythonEngine1AfterLoad(Sender: TObject);
begin
PythonEngine1.SetPythonHome(PythonEngine1.DllPath);
end;
感觉这个更好
procedure TForm1.PythonEngine1BeforeLoad(Sender: TObject);
begin
PythonEngine1.SetPythonHome(PythonEngine1.DllPath);
end;
给我起吧,运行好了。。。。
不过demo1 例子会提示错误啊,不过这个错误表明了运行正确,因为,语句print 2+2,这是python2的,改成print(2+2),OK
这篇关于设置python4delphi支持python3.X的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!