diff --git a/src/serious_python/bin/package_command.dart b/src/serious_python/bin/package_command.dart index 3f410047..1e5ca90a 100644 --- a/src/serious_python/bin/package_command.dart +++ b/src/serious_python/bin/package_command.dart @@ -260,23 +260,20 @@ class PackageCommand extends Command { await cleanupDir(tempDir, allJunkFiles); } - // install requirements - if (requirements.isNotEmpty && !skipSitePackages) { - String? sitePackagesRoot; - - if (platform != "Pyodide") { - if (Platform.environment - .containsKey(sitePackagesEnvironmentVariable)) { - sitePackagesRoot = - Platform.environment[sitePackagesEnvironmentVariable]; - } - if (sitePackagesRoot == null || sitePackagesRoot.isEmpty) { - sitePackagesRoot = path.join(currentPath, "build", "site-packages"); - } - } else { - sitePackagesRoot = path.join(tempDir.path, defaultSitePackagesDir); + // site-packages root + String sitePackagesRoot = + path.join(currentPath, "build", "site-packages"); + if (Platform.environment + .containsKey(sitePackagesEnvironmentVariable)) { + final envValue = + Platform.environment[sitePackagesEnvironmentVariable]; + if (envValue != null && envValue.isNotEmpty) { + sitePackagesRoot = envValue; } + } + // install requirements + if (requirements.isNotEmpty && !skipSitePackages) { if (await Directory(sitePackagesRoot).exists()) { await for (var f in Directory(sitePackagesRoot) .list() @@ -432,6 +429,21 @@ class PackageCommand extends Command { } } + // copy site packages to temp dir for web platform + if (platform == "Pyodide" && requirements.isNotEmpty) { + final sitePackagesSrcDir = Directory(sitePackagesRoot); + if (await sitePackagesSrcDir.exists()) { + stdout.writeln("Copying site packages to app archive"); + final webPkgDir = + Directory(path.join(tempDir.path, defaultSitePackagesDir)); + if (!await webPkgDir.exists()) { + await webPkgDir.create(recursive: true); + } + await copyDirectory( + sitePackagesSrcDir, webPkgDir, sitePackagesSrcDir.path, []); + } + } + // create archive stdout.writeln( "Creating app archive at ${dest.path} from a temp directory");