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
+2
View File
@@ -18,6 +18,8 @@
.\scripts\install_offline.ps1 .\scripts\install_offline.ps1
``` ```
如果在线下载 wheel,默认走 `https://pypi.org/simple`,私有镜像可加 `-IndexUrl`。
启动服务: 启动服务:
```powershell ```powershell
+26 -4
View File
@@ -1,5 +1,6 @@
param( param(
[switch]$NoPause [switch]$NoPause,
[string]$IndexUrl = "https://pypi.org/simple"
) )
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
@@ -23,6 +24,27 @@ function Get-PythonCommand {
throw "Python was not found. Install Python 3.10+ before downloading wheels." 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 { try {
Set-Location $Root Set-Location $Root
if (-not (Test-Path $Req)) { if (-not (Test-Path $Req)) {
@@ -34,13 +56,13 @@ try {
Write-Host "Downloading offline wheels to: $WheelDir" -ForegroundColor Cyan Write-Host "Downloading offline wheels to: $WheelDir" -ForegroundColor Cyan
if ($python -eq "py") { if ($python -eq "py") {
& py -3 -m pip download -r $Req -d $WheelDir Invoke-PipDownload -PythonCommand "py" -PythonArgs @("-3")
} else { } else {
& $python -m pip download -r $Req -d $WheelDir Invoke-PipDownload -PythonCommand $python -PythonArgs @()
} }
if ($LASTEXITCODE -ne 0) { 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 "" Write-Host ""
+11 -3
View File
@@ -1,5 +1,6 @@
param( param(
[switch]$NoPause [switch]$NoPause,
[string]$IndexUrl = "https://pypi.org/simple"
) )
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
@@ -130,11 +131,18 @@ function Install-Requirements {
& $VenvPython -m pip install --no-index --find-links $WheelDir -r $Req & $VenvPython -m pip install --no-index --find-links $WheelDir -r $Req
} else { } else {
Write-Host "No offline wheels found. Installing dependencies from the network." 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) { 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."
} }
} }