Установить Python в Windows
| Проверка установленных версий | |
| Скачать Python | |
| Установка | |
| Расположение файлов | |
| Использование определённых версий | |
| Скачивание с PowerShell | |
| Установка с нуля с PowerShell | |
| Похожие статьи |
Проверка установки Python в Windows
В PowerShell выполните
python
Python 3.10.10 (tags/v3.10.10:aad5f6a, Feb 7 2023, 17:20:36) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
Из этого сообщения можно понять что текущая версия Python это 3.10.10
Посмотреть есть ли ещё установленные версии Python можно проверив директорию куда он устанавливается
ls C:\Users\${Env:Username}\AppData\Local\Programs\Python\
Directory: C:\Users\Andrei\AppData\Local\Programs\Python Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 4/30/2024 1:19 PM Python310 d---- 2/14/2024 3:34 PM Python312 d---- 4/17/2024 4:24 PM Python312-32 d---- 2/19/2024 11:52 AM Python38
Видно что у меня установлены 64-x битные Python 3.8, 3.10, 3.12 и 32-х битная версия Python 3.12
Скачивание
Скачать последнюю стабильную версию можно на официальном
сайте Python
Выберите версию и в таблице найдите нужный вам файл.
Рекомендуемая версия это Windows installer (64-bit)
Скачанный файл будет называть примерно так
python-3.XX.XX-amd64.exe
Например, python-3.10.10-amd64.exe
amd64
Python 3.14.2
Python 3.13.11
Python 3.12.3
Python 3.11.3
Python 3.10.11
Python 3.9.13
Python 3.8.10
32
Установка
Запустить установку можно двойным кликом на .exe файл.
Рекомендую сразу же добавить python.exe в системную переменную PATH
www.devhops.ru
Если вы уже пропустили этот шаг добавить Python в PATH можно командой в cmd
setx PATH "%PATH%;C:\Users\%USERNAME%\AppData\Local\Programs\Python\Python312\Scripts"
Или PowerShell
$Env:Path += ';C:\Users\${Env:Username}\AppData\Local\Programs\Python\Python312'
Либо явно укажите пользователя. В примере ниже указан пользователь Andrei
$Env:Path += ';C:\Users\Andrei\AppData\Local\Programs\Python\Python312'
Дождитесь окончания установки
www.devhops.ru
В случае успеха появится похожее сообщение
www.devhops.ru
Для изучения предлагаются следующие материалы:
Онлайн туториал
Документация
Применение Python в Windows
Что нового в релизе
Расположение файлов
Если Python установлен для всех пользователей то .exe файл может находится здесь:
C:\Windows\py.exe
Если Python был установлен для определённого пользователя, то python.exe будет находися в AppData
C:\Users\Andrei\AppData\Local\Programs\Python\Python310
Вместо Andrei будет имя того пользователя, для которого установлен Python
Проверить куда установлен
# which_python.py import os import sys print(os.path.dirname(sys.executable))
python which_python.py
'C:\Users\ao\AppData\Local\Programs\Python\Python312\python.exe'
Ещё быстрее будет сделать это в интерактивном режиме.
Ещё одно место, где можно найти python.exe это
C:\Users\Username\AppData\Local\Microsoft\WindowsApps
Использование определённых версий
Подробно про создание алиасов в PowerShell вы можете прочитать в статье Alias в PowerShell
notepad $profile
Set-Alias -Name py38 -Value "C:\Users\U\AppData\Local\Programs\Python\Python38\python.exe" Set-Alias -Name py310 -Value "C:\Users\U\AppData\Local\Programs\Python\Python310\python.exe"
Эти алиасы будут доступны только в PowerShell
Теперь выполнив одну из этих команд вы будете запускать определённую версию Python
py310
Python 3.10.11 (tags/v3.10.11:7d4cc5a, Apr 5 2023, 00:38:17) [MSC v.1929 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information.
Это может пригодится для создания виртуальных окружений
py310 -m venv venv
.\venv\Scripts\activate
Внутри окружения нужно ипользовать не py310 а python
Скачивание PowerShell скриптом
Пример скачивания python.exe PowerShell скриптом
# DownloadPython.ps1 $ARCH = 64 # $ARCH = 32 $PY_VERSION = "3.12.5" $TMP_DISK = "C:\" $TMP_DIR = "tmp_python" $TMP_PATH = Join-Path -Path $TMP_DISK -ChildPath $TMP_DIR $URL = "https://www.python.org/ftp/python/${PY_VERSION}" Write-Host $URL -f Cyan Write-Host "Using ${ARCH}-bit Python" -f Cyan If ($ARCH -eq 64) { Write-Host "64-bit case" -f Cyan $PYTHON_EXE_URL = ${URL} + "/python-3.12.5-amd64.exe" } Else { Write-Host "32-bit case" -f Cyan $PYTHON_EXE_URL = ${URL} + "/python-3.12.5.exe" } $CURRENT_USER = $Env:Username $TMP_PYTHON_EXE = Join-Path -Path $TMP_PATH -ChildPath "python.exe" Write-Host $TMP_PYTHON_EXE -f Gray If (Test-Path -path ${TMP_PATH}) { Write-Host "${TMP_PATH} dir exists" -f Green } Else { Write-Host "${TMP_PATH} dir does not exist - creating" -f Yellow New-Item -Path $TMP_DISK -Name $TMP_DIR -ItemType "directory" } If (Test-Path -path $TMP_PYTHON_EXE -PathType Leaf) { Write-Host "python.exe file exists" -f Green } Else { Write-Host "python.exe file does not exist - starting download" -f Yellow Write-Host "Downloading ${PYTHON_EXE_URL}" -f Cyan Invoke-WebRequest $PYTHON_EXE_URL -OutFile $TMP_PYTHON_EXE }
Установка PowerShell скриптом
Рассмотрим пример создания с нуля готового виртуального окружения Python.
Управляющий скрипт будет называться
InitialSetup.ps1
.
С его помощью мы запустим скачивание и установку Python - скрипт
DownloadAndInstallPythonAndUpdatePath.ps1
.
Затем добавим нужные пути в систему с помощью
AddPythonPath.ps1
.
Когда пути обновлены запустится скрипт который дожидается установки Python -
WatchForPythonAndCreateEnv.ps1
и затем содает вирутальное окружение с помощью
CreateEnv.ps1
предварительно можно почистить WindowsApps с помощью
DeletePythonFromWindowsApps.ps1
Структура проекта выглядит следующим образом
├───module └───setup ├───CreateEnv.ps1 ├───DeletePythonFromWindowsApps.ps1 ├───DownloadAndInstallPythonAndUpdatePath.ps1 ├───InitialSetup.ps1 ├───IsPythonInstalled.ps1 └───WatchForPythonAndCreateEnv.ps1
Логически скрипты можно расположить так
├───module └───setup └───InitialSetup.ps1 ├───DeletePythonFromWindowsApps.ps1 ├───DownloadAndInstallPythonAndUpdatePath.ps1 └───WatchForPythonAndCreateEnv.ps1 ├───IsPythonInstalled.ps1 └───CreateEnv.ps1
Пример скачивания и установки для всех пользователей python.exe PowerShell скриптом.
# DownloadAndInstallPythonAndUpdatePath.ps1 # Author: andreyolegovich.ru for www.devhops.ru $ARCH = 64 # $ARCH = 32 $PY_VERSION = "3.12.5" $TMP_DISK = "C:\" $TMP_DIR = "tmp_python" $TMP_PATH = Join-Path -Path $TMP_DISK -ChildPath $TMP_DIR $URL = "https://www.python.org/ftp/python/${PY_VERSION}" Write-Host "${ARCH}-bit case" -f Cyan Write-Host $URL -f Cyan Write-Host "Using ${ARCH}-bit Python" -f Cyan $CURRENT_USER = $Env:Username $USER_DIR = Join-Path "C:\Users\" -ChildPath $CURRENT_USER $APP_DATA_PY = Join-Path -Path $USER_DIR -ChildPath "\AppData\Local\Programs\Python" If ($ARCH -eq 64) { $PYTHON_EXE_URL = ${URL} + "/python-3.12.5-amd64.exe" $LOCAL_PY_PATH = Join-Path -Path $APP_DATA_PY -ChildPath "\Python312\" $PROGRAM_FILES_PY = 'C:\Program Files\Python312\;' } Else { $PYTHON_EXE_URL = ${URL} + "/python-3.12.5.exe" $LOCAL_PY_PATH = Join-Path -Path $APP_DATA_PY -ChildPath "\Python312-32\" $PROGRAM_FILES_PY = 'C:\Program Files (x86)\Python312-32\;' } $Env:Path = $LOCAL_PY_PATH + ";" + $Env:Path $LOCAL_PY_SCRIPTS_PATH = Join-Path -Path $LOCAL_PY_PATH -ChildPath "Scripts" $Env:Path = $LOCAL_PY_SCRIPTS_PATH + ";" + $Env:Path $Env:PYTHONPATH += $LOCAL_PY_SCRIPTS_PATH $Env:Path = $PROGRAM_FILES_PY + $Env:Path $Env:PYTHONPATH += $PROGRAM_FILES_PY $TMP_PYTHON_EXE = Join-Path -Path $TMP_PATH -ChildPath "python.exe" Write-Host $TMP_PYTHON_EXE -f Gray If (Test-Path -path ${TMP_PATH}) { Write-Host "${TMP_PATH} dir exists" -f Green } Else { Write-Host "${TMP_PATH} dir does not exist - creating" -f Yellow New-Item -Path $TMP_DISK -Name $TMP_DIR -ItemType "directory" } If (Test-Path -path $TMP_PYTHON_EXE -PathType Leaf) { Write-Host "python.exe file exists" -f Green } Else { Write-Host "python.exe file does not exist - starting download" -f Yellow Write-Host "Downloading $PYTHON_EXE_URL" -f Cyan Invoke-WebRequest $PYTHON_EXE_URL -OutFile $TMP_PYTHON_EXE } # Update Path $PARENT_PATH = Split-Path $pwd $Env:Path += ';' $Env:Path += $PARENT_PATH $Env:Path += '\module' $Env:Path += ';' $Env:Path += $PARENT_PATH $Env:PYTHONPATH += ';' $Env:PYTHONPATH += $PARENT_PATH $Env:PYTHONPATH += '\module' $Env:PYTHONPATH += ';' $Env:PYTHONPATH += $PARENT_PATH $Env:PYTHONPATH += ';' $Env:Path = 'C:\Windows\;' + $Env:Path $Env:PYTHONPATH += 'C:\Windows\' # Install Python & $TMP_PYTHON_EXE /passive InstallAllUsers=1 PrependPath=1 Include_test=0
Скрипт, который проверяет завершилась ли установка Python и когда она завершается создает виртуальное окружение а затем устанавливает зависимости.
Get-Command python -ErrorAction SilentlyContinue - не очень надёжный способ проверки. Если в C:\Users\Name\AppData\Local\Microsoft\WindowsApps есть файлы python.exe или python3.exe он может вернуть положительный результат.
# WatchForPythonAndCreateEnv.ps1 . .\IsPythonInstalled.ps1 . .\CreateEnv.ps1 $py_installed = 0 $counter = 1 while ($counter -gt 0) { # Write-Output "while loop is running" Write-Host $counter -f Green $counter = $counter + 1 $py_installed = IsPythonInstalled Write-Host $py_installed -f Red Start-Sleep -Seconds 3.0 if ($py_installed -eq 1) { Write-Host "Python is installed waiting for 10 seconds" -f Green Start-Sleep -Seconds 10.0 CreateEnv $counter = 0 } }
# IsPythonInstalled.ps1 function IsPythonInstalled { # Write-Output "IsPythonInstalled is running" $installed = Get-Command python -ErrorAction SilentlyContinue Write-Host $installed -f Yellow if ($installed) { $version = python --version 2>&1 Write-Host "Python version: $version" -f Green $result = 1 } else { Write-Host "Python is not yet installed on this device." -f Yellow $result = 0 } return $result }
# CreateEnv.ps1 function CreateEnv { Write-Host "Creating virtual environment" -f Blue Write-Host "cd .." -f Blue cd .. Write-Host "python -m venv venv32" -f Blue python -m venv venv32 Write-Host ".\venv32\Scripts\activate" -f Blue .\venv32\Scripts\activate Write-Host "python -m pip install -r requirements.txt" -f Blue python -m pip install -r requirements.txt Write-Host "cd .\setup" -f Blue cd .\setup } # If used separately uncomment line below # CreateEnv
Скрипт, который удаляет Python .exe файлы из WinodwsApps
# DeletePythonFromWindowsApps.ps1 $CURRENT_USER = $Env:Username $PYPATH = 'C:\Users\' + $CURRENT_USER + '\AppData\Local\Microsoft\WindowsApps\python.exe' $PY3PATH = 'C:\Users\' + $CURRENT_USER + '\AppData\Local\Microsoft\WindowsApps\python3.exe' If (Test-Path -path ${PYPATH}) { Remove-Item $PYPATH } If (Test-Path -path ${PY3PATH}) { Remove-Item $PY3PATH }
Скрипт, который удаляет временную директорию для Python
# CleanTempPython.ps1 $TMP_PATH = "C:\tmp_python" $TMP_PYTHON_EXE = Join-Path -Path $TMP_PATH -ChildPath "python.exe" Write-Host $TMP_PYTHON_EXE -f Gray If (Test-Path -path $TMP_PYTHON_EXE -PathType Leaf) { Remove-Item $TMP_PYTHON_EXE } Else { Write-Host "python.exe file does not exist" -f Yellow }
Скрипт, который запускает все предыдущие скрипты: скачивание и установку Python, обновление системных переменных и создание виртуального окружения после установки
# InitialSetup.ps1 # Exec the following command in Powershell first # Set-ExecutionPolicy -ExecutionPolicy Unrestricted Write-Host "Downloading and Installing Python and Updating Env" -f Green .\DownloadAndInstallPythonAndUpdatePath.ps1 Write-Host "Delete Python .exe files from WindowsApps" .\DeletePythonFromWindowsApps.ps1 Write-Host "Waiting for installation to finish and creating Python venv" -f Green .\WatchForPythonAndCreateEnv.ps1 Write-Host "Cleaning temporary dir" -f Green .\CleanTempPython.ps1
Автор статьи: Андрей Олегович
| Python | |
| Сложности при работе с Python | |
| Виртуальное окружение | |
| pyenv | |
| Anaconda |