@@ -126,7 +126,7 @@ interface
126
126
end ;
127
127
const
128
128
{ $IFDEF MSWINDOWS}
129
- PYTHON_KNOWN_VERSIONS: array [1 ..10 ] of TPythonVersionProp =
129
+ PYTHON_KNOWN_VERSIONS: array [1 ..12 ] of TPythonVersionProp =
130
130
( (DllName: ' python23.dll' ; RegVersion: ' 2.3' ; APIVersion: 1012 ; CanUseLatest: True),
131
131
(DllName: ' python24.dll' ; RegVersion: ' 2.4' ; APIVersion: 1012 ; CanUseLatest: True),
132
132
(DllName: ' python25.dll' ; RegVersion: ' 2.5' ; APIVersion: 1013 ; CanUseLatest: True),
@@ -136,10 +136,12 @@ interface
136
136
(DllName: ' python31.dll' ; RegVersion: ' 3.1' ; APIVersion: 1013 ; CanUseLatest: True),
137
137
(DllName: ' python32.dll' ; RegVersion: ' 3.2' ; APIVersion: 1013 ; CanUseLatest: True),
138
138
(DllName: ' python33.dll' ; RegVersion: ' 3.3' ; APIVersion: 1013 ; CanUseLatest: True),
139
- (DllName: ' python34.dll' ; RegVersion: ' 3.4' ; APIVersion: 1013 ; CanUseLatest: True) );
139
+ (DllName: ' python34.dll' ; RegVersion: ' 3.4' ; APIVersion: 1013 ; CanUseLatest: True),
140
+ (DllName: ' python35.dll' ; RegVersion: ' 3.5' ; APIVersion: 1013 ; CanUseLatest: True),
141
+ (DllName: ' python36.dll' ; RegVersion: ' 3.6' ; APIVersion: 1013 ; CanUseLatest: True) );
140
142
{ $ENDIF}
141
143
{ $IFDEF LINUX}
142
- PYTHON_KNOWN_VERSIONS: array [1 ..10 ] of TPythonVersionProp =
144
+ PYTHON_KNOWN_VERSIONS: array [1 ..12 ] of TPythonVersionProp =
143
145
( (DllName: ' libpython2.3.so' ; RegVersion: ' 2.3' ; APIVersion: 1012 ; CanUseLatest: True),
144
146
(DllName: ' libpython2.4.so' ; RegVersion: ' 2.4' ; APIVersion: 1012 ; CanUseLatest: True),
145
147
(DllName: ' libpython2.5.so' ; RegVersion: ' 2.5' ; APIVersion: 1013 ; CanUseLatest: True),
@@ -149,7 +151,9 @@ interface
149
151
(DllName: ' libpython3.1.so' ; RegVersion: ' 3.1' ; APIVersion: 1013 ; CanUseLatest: True),
150
152
(DllName: ' libpython3.2.so' ; RegVersion: ' 3.2' ; APIVersion: 1013 ; CanUseLatest: True),
151
153
(DllName: ' libpython3.3.so' ; RegVersion: ' 3.3' ; APIVersion: 1013 ; CanUseLatest: True),
152
- (DllName: ' libpython3.4.so' ; RegVersion: ' 3.4' ; APIVersion: 1013 ; CanUseLatest: True) );
154
+ (DllName: ' libpython3.4.so' ; RegVersion: ' 3.4' ; APIVersion: 1013 ; CanUseLatest: True),
155
+ (DllName: ' libpython3.5.so' ; RegVersion: ' 3.5' ; APIVersion: 1013 ; CanUseLatest: True),
156
+ (DllName: ' libpython3.6.so' ; RegVersion: ' 3.6' ; APIVersion: 1013 ; CanUseLatest: True) );
153
157
{ $ENDIF}
154
158
{ $IFDEF PYTHON23}
155
159
COMPILED_FOR_PYTHON_VERSION_INDEX = 1 ;
@@ -180,6 +184,12 @@ interface
180
184
{ $ENDIF}
181
185
{ $IFDEF PYTHON34}
182
186
COMPILED_FOR_PYTHON_VERSION_INDEX = 10 ;
187
+ { $ENDIF}
188
+ { $IFDEF PYTHON35}
189
+ COMPILED_FOR_PYTHON_VERSION_INDEX = 11 ;
190
+ { $ENDIF}
191
+ { $IFDEF PYTHON36}
192
+ COMPILED_FOR_PYTHON_VERSION_INDEX = 12 ;
183
193
{ $ENDIF}
184
194
PYT_METHOD_BUFFER_INCREASE = 10 ;
185
195
PYT_MEMBER_BUFFER_INCREASE = 10 ;
@@ -3493,7 +3503,7 @@ procedure TPythonInterface.AfterLoad;
3493
3503
inherited ;
3494
3504
FIsPython3000 := Pos(' PYTHON3' , UpperCase(DLLName)) = 1 ;
3495
3505
FMajorVersion := StrToInt(DLLName[7 { $IFDEF LINUX} +3 { $ENDIF} ]);
3496
- FMinorVersion := StrToInt(DLLName[8 { $IFDEF LINUX} +3 { $ENDIF} ]);
3506
+ FMinorVersion := StrToInt(DLLName[8 { $IFDEF LINUX} +4 { $ENDIF} ]);
3497
3507
3498
3508
3499
3509
if FIsPython3000 then
@@ -9676,8 +9686,14 @@ function IsPythonVersionRegistered(PythonVersion : string;
9676
9686
// the registry info in HKEY_CURRENT_USER.
9677
9687
// Hence, for Current user installations we need to try and find the install path
9678
9688
// since it may not be on the system path.
9689
+
9690
+ // The above convension was changed in Python 3.5. Now even for all user
9691
+ // installations the dll is located at the InstallPath.
9692
+
9679
9693
var
9680
9694
key: string;
9695
+ MajorVersion : integer;
9696
+ MinorVersion : integer;
9681
9697
begin
9682
9698
Result := False;
9683
9699
InstallPath := ' ' ;
@@ -9690,6 +9706,11 @@ function IsPythonVersionRegistered(PythonVersion : string;
9690
9706
if KeyExists(key) then begin
9691
9707
AllUserInstall := True;
9692
9708
Result := True;
9709
+ MajorVersion := StrToInt(PythonVersion[1 ]);
9710
+ MinorVersion := StrToInt(PythonVersion[3 ]);
9711
+ if (MajorVersion > 3 ) or ((MajorVersion = 3 ) and (MinorVersion >= 5 )) then
9712
+ if OpenKey(Key, False) then
9713
+ InstallPath := ReadString(' ' );
9693
9714
end ;
9694
9715
finally
9695
9716
Free;
0 commit comments