fix: improve wheel download script reliability

This commit is contained in:
2026-07-02 15:46:33 +08:00
parent b49ecbc508
commit 1ed751c4dc
3 changed files with 39 additions and 7 deletions
+26 -4
View File
@@ -1,5 +1,6 @@
param(
[switch]$NoPause
[switch]$NoPause,
[string]$IndexUrl = "https://pypi.org/simple"
)
$ErrorActionPreference = "Stop"
@@ -23,6 +24,27 @@ function Get-PythonCommand {
throw "Python was not found. Install Python 3.10+ before downloading wheels."
}
function Invoke-PipDownload {
param(
[string]$PythonCommand,
[string[]]$PythonArgs
)
$pipArgs = @(
"-m", "pip", "download",
"--index-url", $IndexUrl,
"--trusted-host", "pypi.org",
"--trusted-host", "files.pythonhosted.org",
"--disable-pip-version-check",
"--retries", "3",
"--timeout", "60",
"-r", $Req,
"-d", $WheelDir
)
& $PythonCommand @PythonArgs @pipArgs
}
try {
Set-Location $Root
if (-not (Test-Path $Req)) {
@@ -34,13 +56,13 @@ try {
Write-Host "Downloading offline wheels to: $WheelDir" -ForegroundColor Cyan
if ($python -eq "py") {
& py -3 -m pip download -r $Req -d $WheelDir
Invoke-PipDownload -PythonCommand "py" -PythonArgs @("-3")
} else {
& $python -m pip download -r $Req -d $WheelDir
Invoke-PipDownload -PythonCommand $python -PythonArgs @()
}
if ($LASTEXITCODE -ne 0) {
throw "Wheel download failed. Check network access and pip."
throw "Wheel download failed. Check network access to $IndexUrl. If your environment uses a private PyPI mirror, pass -IndexUrl with the mirror address."
}
Write-Host ""
+11 -3
View File
@@ -1,5 +1,6 @@
param(
[switch]$NoPause
[switch]$NoPause,
[string]$IndexUrl = "https://pypi.org/simple"
)
$ErrorActionPreference = "Stop"
@@ -130,11 +131,18 @@ function Install-Requirements {
& $VenvPython -m pip install --no-index --find-links $WheelDir -r $Req
} else {
Write-Host "No offline wheels found. Installing dependencies from the network."
& $VenvPython -m pip install -r $Req
& $VenvPython -m pip install `
--index-url $IndexUrl `
--trusted-host pypi.org `
--trusted-host files.pythonhosted.org `
--disable-pip-version-check `
--retries 3 `
--timeout 60 `
-r $Req
}
if ($LASTEXITCODE -ne 0) {
throw "Dependency installation failed. If the server is offline, run scripts\download_wheels.ps1 on an online machine first and copy vendor\wheels to this server."
throw "Dependency installation failed. Check network access to $IndexUrl. If the server is offline, run scripts\download_wheels.ps1 on an online machine first and copy vendor\wheels to this server."
}
}