@@ -223,10 +223,19 @@ class PackageCommand extends Command {
223
223
var pythonDir =
224
224
Directory (path.join (Directory .systemTemp.path, "hostpython3.10" ));
225
225
226
- if (! await pythonDir.exists ()) {
226
+ var pythonExePath = Platform .isWindows
227
+ ? path.join (pythonDir.path, 'python' , 'python.exe' )
228
+ : path.join (pythonDir.path, 'python' , 'bin' , 'python3' );
229
+
230
+ if (! await File (pythonExePath).exists ()) {
227
231
stdout
228
232
.writeln ("Downloading and extracting Python into ${pythonDir .path }" );
229
233
234
+ if (await pythonDir.exists ()) {
235
+ await pythonDir.delete (recursive: true );
236
+ }
237
+ await pythonDir.create (recursive: true );
238
+
230
239
var isArm64 = Platform .version.contains ("arm64" );
231
240
232
241
String arch = "" ;
@@ -243,8 +252,6 @@ class PackageCommand extends Command {
243
252
final url =
244
253
"https://github.com/indygreg/python-build-standalone/releases/download/20230507/cpython-3.10.11+20230507-$arch -install_only.tar.gz" ;
245
254
246
- await pythonDir.create (recursive: true );
247
-
248
255
// Download the release asset
249
256
var response = await http.get (Uri .parse (url));
250
257
var archivePath = path.join (pythonDir.path, 'python.tar.gz' );
@@ -253,13 +260,10 @@ class PackageCommand extends Command {
253
260
// Extract the archive
254
261
await Process .run ('tar' , ['-xzf' , archivePath, '-C' , pythonDir.path]);
255
262
} else {
256
- stdout.writeln ("Python has already downloaded to ${ pythonDir . path } " );
263
+ stdout.writeln ("Python executable found at $ pythonExePath " );
257
264
}
258
265
259
266
// Run the python executable
260
- var pythonPath = Platform .isWindows
261
- ? path.join (pythonDir.path, 'python' , 'python.exe' )
262
- : path.join (pythonDir.path, 'python' , 'bin' , 'python3' );
263
- return await runExec (pythonPath, args, environment: environment);
267
+ return await runExec (pythonExePath, args, environment: environment);
264
268
}
265
269
}
0 commit comments