Bonjour,

J'essaie d'interfacer Python avec Lazarus, essentiellement dans le but d'utiliser la librairie mpmath pour le calcul en multi-précision
J'utilise la dernière version 3.8. Apparemment, Lazarus refuse la commande " GetPythonEngine.Initialize; "
J'ai effectué les deux essais décrits ci-dessous sans succès.

Pouvez-vous m'aider ? Merci




Python4Delphi et mpmath ont été téléchargés et installés et ajoutés au projet Lazarus

PythonEngine apparaît correctement dans la liste des fonctions de l'éditeur de source

J'ai ajouté dans la fonction principale "Calcul"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
uses
	PythonEngine, VarPyth;
 
 { TForm1 }
 
  TForm1 = class(TForm)     
...
    PythonEngine: TPythonEngine;  
...
End;
Premier essai
***********
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.FormCreate(Sender: TObject);
Var
   a:String;
   Py:Variant;
begin
   GetPythonEngine.Initialize;
   Py:=Import('mpmath');
 
   Py.mp.dps:=50;
   a:=Py.str(Py.mpf(2)**Py.mpf('0.5'));
   Form1.Memo2.Lines.Add(a);
end;
Citation Envoyé par Erreur
calcul.pas(151,20) Error: identifier idents no member "Initialize"
Deuxième essai
**************
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.FormCreate(Sender: TObject);
Var
   a:String;
   Py:Variant;
begin
   with GetPythonEngine do
   begin
//    GetPythonEngine.Initialize;
      Py:=Import('mpmath');
 
      Py.mp.dps:=50;
      a:=Py.str(Py.mpf(2)**Py.mpf('0.5'));
      Form1.Memo2.Lines.Add(a);
   end;
end;
Citation Envoyé par Erreur
Le projet project a levé une classe d'exception "Exception" avec le message :
No Python engine was created
dans le fichier "..\..\Source\PythonEngine.pas à la ligne 9764
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
function  GetPythonEngine : TPythonEngine;
begin
  if not Assigned( gPythonEngine ) then
    raise Exception.Create(SCannotCreatePythonEngine);    // <==   (9764)
  if not gPythonEngine.Finalizing and not gPythonEngine.Initialized then
    raise Exception.Create(SCannotInitPythonEngine);
  Result := gPythonEngine;
end;