commits
tags
<#
Sätter upp projektet på Windows: skapar virtuell miljö (.venv),
installerar Python-paketen i requirements.txt samt Playwrights
Chromium-browser.
Körs en gång (eller på nytt om requirements.txt ändras):
powershell -ExecutionPolicy Bypass -File .\install_win.ps1
Starta sedan med:
.venv\Scripts\Activate.ps1
python run_webui.py # webui:t på http://127.0.0.1:8765
python main.py # fristående 1177-exempel
#>
$ErrorActionPreference = "Stop"
Set-Location -Path $PSScriptRoot
$VenvDir = ".venv"
# Hitta en python-tolk. py-launchern föredras på Windows. Microsoft Store-
# aliaset i ...\Microsoft\WindowsApps\ ignoreras (det är bara en stub som
# öppnar Store och inte en riktig Python).
function Test-PythonExe([string]$exe, [string[]]$prefix) {
try {
$out = & $exe @($prefix + "--version") 2>&1
return ($LASTEXITCODE -eq 0 -and "$out" -match "Python 3")
} catch { return $false }
}
function Get-PythonCmd {
# 1. py-launchern (finns oftast i PATH även när python.exe inte gör det)
$pyCmd = Get-Command py -ErrorAction SilentlyContinue
if ($pyCmd -and (Test-PythonExe $pyCmd.Source @("-3"))) {
return @{ Exe = $pyCmd.Source; Args = @("-3") }
}
# 2. python / python3 i PATH, men hoppa över WindowsApps-stubben
foreach ($name in "python", "python3") {
foreach ($cmd in @(Get-Command $name -All -ErrorAction SilentlyContinue)) {
if ($cmd.Source -like "*\Microsoft\WindowsApps\*") { continue }
if (Test-PythonExe $cmd.Source @()) {
return @{ Exe = $cmd.Source; Args = @() }
}
}
}
# 3. Vanliga installationsplatser (t.ex. om PATH inte lästs om ännu)
$roots = @(
"$env:LOCALAPPDATA\Programs\Python",
"$env:PROGRAMFILES\Python*",
"${env:ProgramFiles(x86)}\Python*",
"C:\Python3*"
)
foreach ($root in $roots) {
$found = Get-ChildItem -Path $root -Filter python.exe -Recurse -Depth 1 -ErrorAction SilentlyContinue |
Sort-Object FullName -Descending | Select-Object -First 1
if ($found -and (Test-PythonExe $found.FullName @())) {
return @{ Exe = $found.FullName; Args = @() }
}
}
throw @"
Hittar ingen riktig Python-installation.
Installera Python 3 fran https://www.python.org/downloads/ och kryssa i
'Add python.exe to PATH' i installeraren. Oppna sedan ett NYTT
terminalfonster (sa att PATH last om) och kor det har skriptet igen.
Tips: kor du 'python' och det oppnar Microsoft Store ar det bara ett
alias - stang av det under Installningar > Appar > Appkortkommandon for
apputforande, eller installera fran python.org enligt ovan.
"@
}
$py = Get-PythonCmd
if (-not (Test-Path $VenvDir)) {
Write-Host "Skapar virtuell miljo i .\$VenvDir ..."
& $py.Exe @($py.Args + @("-m", "venv", $VenvDir))
if ($LASTEXITCODE -ne 0) { throw "Kunde inte skapa virtuell miljo." }
} else {
Write-Host "Virtuell miljo .\$VenvDir finns redan, ateranvander den."
}
$VenvPython = Join-Path $VenvDir "Scripts\python.exe"
if (-not (Test-Path $VenvPython)) { throw "Hittar inte $VenvPython efter venv-skapande." }
Write-Host "Uppdaterar pip..."
& $VenvPython -m pip install --upgrade pip
if ($LASTEXITCODE -ne 0) { throw "pip-uppgradering misslyckades." }
Write-Host "Installerar Python-paket fran requirements.txt..."
& $VenvPython -m pip install -r requirements.txt
if ($LASTEXITCODE -ne 0) { throw "Paketinstallation misslyckades." }
Write-Host "Installerar Playwright Chromium..."
& $VenvPython -m playwright install chromium
if ($LASTEXITCODE -ne 0) { throw "Playwright-installation misslyckades." }
Write-Host ""
Write-Host "Klart! Starta med:"
Write-Host " .venv\Scripts\Activate.ps1"
Write-Host " python run_webui.py # webui pa http://127.0.0.1:8765"
Write-Host " python main.py # fristaende 1177-exempel"