Установить 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
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы. Если там пусто считайте это рекламой моей телеги
Установка
Запустить установку можно двойным кликом на .exe файл.
Рекомендую сразу же добавить python.exe в системную переменную PATH
Если вы уже пропустили этот шаг добавить Python в PATH можно командой PowerShell
$Env:Path += ';C:\Users\${Env:Username}\AppData\Local\Programs\Python\Python312'
Либо явно укажите пользователя. В примере ниже указан пользователь Andrei
$Env:Path += ';C:\Users\Andrei\AppData\Local\Programs\Python\Python312'
Дождитесь окончания установки
В случае успеха появится похожее сообщение
Для изучения предлагаются следующие материалы:
Онлайн туториал
Документация
Применение 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 |