@@ -1363,6 +1363,8 @@ TPythonInterface=class(TDynamicDll)
13631363 Py_NoSiteFlag: PInteger;
13641364 Py_FrozenFlag: PInteger;
13651365 Py_IgnoreEnvironmentFlag: PInteger;
1366+ Py_DontWriteBytecodeFlag: PInteger;
1367+ Py_IsolatedFlag: PInteger;
13661368
13671369 PyImport_FrozenModules: PP_frozen;
13681370
@@ -1880,16 +1882,17 @@ TPythonInterface=class(TDynamicDll)
18801882// --------------------------------------------------------
18811883type
18821884 TDatetimeConversionMode = (dcmToTuple, dcmToDatetime);
1885+ TPythonFlag = (pfDebug, pfInteractive, pfNoSite, pfOptimize, pfVerbose,
1886+ pfFrozenFlag, pfIgnoreEnvironmentFlag,
1887+ pfDontWriteBytecodeFlag, pfIsolatedFlag);
1888+ TPythonFlags = set of TPythonFlag;
18831889const
18841890 DEFAULT_DATETIME_CONVERSION_MODE = dcmToTuple;
1891+ DEFAULT_FLAGS = { $IFNDEF IOS} []{ $ELSE} [pfDontWriteBytecodeFlag, pfIsolatedFlag]{ $ENDIF} ;
18851892type
18861893 TEngineClient = class ;
18871894 TPathInitializationEvent = procedure ( Sender : TObject; var Path : string ) of Object ;
18881895 TSysPathInitEvent = procedure ( Sender : TObject; PathList : PPyObject ) of Object ;
1889- TPythonFlag = (pfDebug, pfInteractive, pfNoSite, pfOptimize, pfVerbose,
1890- pfFrozenFlag, pfIgnoreEnvironmentFlag);
1891- TPythonFlags = set of TPythonFlag;
1892-
18931896
18941897 TTracebackItem = class
18951898 public
@@ -2089,7 +2092,7 @@ TPythonEngine = class(TPythonInterface)
20892092 property InitScript: TStrings read FInitScript write SetInitScript;
20902093 property InitThreads: Boolean read FInitThreads write SetInitThreads default False;
20912094 property IO: TPythonInputOutput read FIO write SetIO;
2092- property PyFlags: TPythonFlags read FPyFlags write SetPyFlags default [] ;
2095+ property PyFlags: TPythonFlags read FPyFlags write SetPyFlags default DEFAULT_FLAGS ;
20932096 property RedirectIO: Boolean read FRedirectIO write FRedirectIO default True;
20942097 property UseWindowsConsole: Boolean read FUseWindowsConsole write FUseWindowsConsole default False;
20952098 property OnAfterInit: TNotifyEvent read FOnAfterInit write FOnAfterInit;
@@ -3656,6 +3659,9 @@ procedure TPythonInterface.MapDll;
36563659
36573660 Py_IgnoreEnvironmentFlag := Import (' Py_IgnoreEnvironmentFlag' );
36583661
3662+ Py_DontWriteBytecodeFlag := Import (' Py_DontWriteBytecodeFlag' );
3663+ Py_IsolatedFlag := Import (' Py_IsolatedFlag' );
3664+
36593665 Py_None := Import (' _Py_NoneStruct' );
36603666 Py_Ellipsis := Import (' _Py_EllipsisObject' );
36613667 Py_False := Import (' _Py_FalseStruct' );
@@ -4484,7 +4490,7 @@ constructor TPythonEngine.Create(AOwner: TComponent);
44844490 FInitThreads := False;
44854491 FTraceback := TPythonTraceback.Create;
44864492 FUseWindowsConsole := False;
4487- FPyFlags := [] ;
4493+ FPyFlags := DEFAULT_FLAGS ;
44884494 FDatetimeConversionMode := DEFAULT_DATETIME_CONVERSION_MODE;
44894495 if csDesigning in ComponentState then
44904496 begin
@@ -4615,6 +4621,8 @@ procedure TPythonEngine.AssignPyFlags;
46154621 SetFlag(Py_NoSiteFlag, pfNoSite in FPyFlags);
46164622 SetFlag(Py_FrozenFlag, pfFrozenFlag in FPyFlags);
46174623 SetFlag(Py_IgnoreEnvironmentFlag, pfIgnoreEnvironmentFlag in FPyFlags);
4624+ SetFlag(Py_DontWriteBytecodeFlag, pfDontWriteBytecodeFlag in FPyFlags);
4625+ SetFlag(Py_IsolatedFlag, pfIsolatedFlag in FPyFlags);
46184626end ;
46194627
46204628procedure TPythonEngine.Initialize ;
@@ -4706,6 +4714,8 @@ procedure TPythonEngine.Initialize;
47064714 AssignPyFlags;
47074715 if Length(FPythonHome) > 0 then
47084716 Py_SetPythonHome(PWCharT(FPythonHome));
4717+ if Length(FPythonPath) > 0 then
4718+ Py_SetPath(PWCharT(FPythonPath));
47094719 Py_Initialize;
47104720 if Assigned(Py_IsInitialized) then
47114721 FInitialized := Py_IsInitialized() <> 0
0 commit comments