Skip to content

Instantly share code, notes, and snippets.

Last active Oct 27, 2019
What would you like to do?
# Install specified Python version.
# Install only if:
# Our current matrix entry uses this Python version AND
# Python version is not already available.
# from
$py_exe = "${env:PYTHONPATH}\Python.exe"
if ( [System.IO.File]::Exists($py_exe) ) {
echo "$py_exe exists"
exit 0
$req_nodot = $env:PYTHONPATH -replace '\D+Python(\d+(?:rc\d+)?)(-x64)?','$1'
$req_ver = $req_nodot -replace '(\d)(\d+)','$1.$2.0'
$req_dir = $req_nodot -replace '(\d)(\d+)(.*)','$1.$2.0'
$last_three = $env:PYTHONPATH[-3 .. -1] -join ''
if ($last_three -eq "x64") {
} else {
$py_url = ""
Write-Host "Installing Python ${req_dir}/${req_ver}$exe_suffix to $env:PYTHONPATH ..." -ForegroundColor Cyan
$exePath = "$env:TEMP\python-${req_ver}${exe_suffix}.exe"
$downloadFile = "$py_url/${req_dir}/python-${req_ver}${exe_suffix}.exe"
Write-Host "Downloading $downloadFile..."
(New-Object Net.WebClient).DownloadFile($downloadFile, $exePath)
Write-Host "Installing..."
cmd /c start /wait $exePath /quiet TargetDir="$env:PYTHONPATH" Shortcuts=0 Include_launcher=0 InstallLauncherAllUsers=0
Write-Host "Python ${req_ver} installed to $env:PYTHONPATH"
echo "$(& $py_exe --version 2> $null)"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment