設置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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章