4. Использование Python в Windows

Цель этого документа - дать обзор поведения, специфичного для Windows, о котором вы должны знать при использовании Python в Microsoft Windows.

В отличие от большинства Unix-систем и служб, Windows не содержит поддерживаемой системой установки Python. Чтобы сделать Python доступным, команда CPython на протяжении многих лет компилировала инсталляторы для Windows с каждым release. Эти инсталляторы в основном предназначены для установки Python на одного пользователя, при этом основной интерпретатор и библиотека используются одним пользователем. Программа установки также может устанавливать для всех пользователей одной машины, а для локальных дистрибутивов приложений доступен отдельный ZIP-файл.

Как указано в PEP 11, релиз Python поддерживает платформу Windows только в том случае, если Microsoft считает платформу находящейся на расширенной поддержке. Это означает, что Python 3.14 поддерживает Windows 8.1 и более новые версии. Если вам нужна поддержка Windows 7, установите Python 3.8.

Для Windows доступно несколько различных программ установки, каждая из которых имеет определенные преимущества и недостатки.

Полная программа установки содержит все компоненты и является лучшим вариантом для разработчиков, использующих Python для любых проектов.

Пакет Microsoft Store - это простая установка Python, которая подходит для запуска скриптов и пакетов, а также для использования IDLE или других сред разработки. Она требует Windows 10 и выше, но может быть безопасно установлена без повреждения других программ. Он также предоставляет множество удобных команд для запуска Python и его инструментов.

Пакеты nuget.org - это легковесные установки, предназначенные для систем непрерывной интеграции. Они могут использоваться для сборки пакетов Python или запуска скриптов, но не обновляются и не имеют инструментов пользовательского интерфейса.

Встраиваемый пакет - это минимальный пакет Python, подходящий для встраивания в более крупное приложение.

4.1. Полная программа установки

4.1.1. Этапы установки

Для загрузки доступны четыре инсталлятора Python 3.14 - по два для 32-битной и 64-битной версий интерпретатора. Установщик web - это небольшая начальная загрузка, которая автоматически загружает необходимые компоненты по мере необходимости. Оффлайн-установщик включает компоненты, необходимые для установки по умолчанию, и требует подключения к Интернету только для работы дополнительных функций. Другие способы избежать загрузки во время установки см. в разделе Установка без загрузки.

После запуска программы установки можно выбрать один из двух вариантов:

../_images/win_installer.png

Если вы выберете «Установить сейчас»:

  • Вам не нужно быть администратором (если только не требуется системное обновление библиотеки C Runtime Library или вы не устанавливаете Python Launcher для Windows для всех пользователей).

  • Python будет установлен в ваш пользовательский каталог

  • В соответствии с опцией, указанной внизу первой страницы, будет установлен Python Launcher для Windows.

  • Стандартная библиотека, набор тестов, программа запуска и pip будут установлены

  • Если выбрано, каталог установки будет добавлен в ваш PATH.

  • Ярлыки будут видны только для текущего пользователя

Выбрав «Настроить установку», вы сможете выбрать функции для установки, место установки и другие параметры или действия после установки. Чтобы установить отладочные символы или двоичные файлы, необходимо использовать эту опцию.

Чтобы выполнить установку для всех пользователей, необходимо выбрать «Настроить установку». В данном случае:

  • От вас может потребоваться предоставление административных полномочий или одобрения

  • Python будет установлен в каталог Program Files

  • Python Launcher для Windows будет установлен в каталог Windows

  • Дополнительные функции могут быть выбраны во время установки

  • Стандартная библиотека может быть предварительно скомпилирована в байткод

  • Если выбран этот пункт, каталог установки будет добавлен в систему PATH.

  • Ярлыки доступны для всех пользователей

4.1.2. Снятие ограничения MAX_PATH

Исторически Windows ограничивала длину пути 260 символами. Это означало, что пути длиннее этого значения не разрешались, что приводило к ошибкам.

В последних версиях Windows это ограничение может быть расширено примерно до 32 000 символов. Вашему администратору необходимо активировать групповую политику «Включить длинные пути Win32» или установить значение LongPathsEnabled на 1 в ключе реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem.

Это позволяет функции open(), модулю os и большинству других функций пути принимать и возвращать пути длиной более 260 символов.

После изменения вышеуказанного параметра дальнейшая настройка не требуется.

Изменено в версии 3.6: В Python была включена поддержка длинных путей.

4.1.3. Установка без пользовательского интерфейса

Все опции, доступные в пользовательском интерфейсе программы установки, можно задать и в командной строке, что позволяет скриптовым программам установки воспроизводить установку на многих машинах без участия пользователя. Эти параметры также можно задавать, не отключая пользовательский интерфейс, чтобы изменить некоторые значения по умолчанию.

В программу установки могут быть переданы следующие параметры (их можно найти, выполнив программу установки с /?):

Имя

Описание

/пассивный

для отображения прогресса, не требующего взаимодействия с пользователем

/тихий

для установки/удаления без отображения пользовательского интерфейса

/simple

для предотвращения пользовательских настроек

/uninstall

удалить Python (без подтверждения)

/layout [directory]

для предварительной загрузки всех компонентов

/log [filename]

чтобы указать местоположение файлов журнала

Все остальные опции передаются как name=value, где значение обычно 0 для отключения функции, 1 для включения функции или путь. Полный список доступных опций приведен ниже.

Имя

Описание

По умолчанию

InstallAllUsers

Выполните установку в масштабах всей системы.

0

TargetDir

Каталог установки

Выбирается на основе InstallAllUsers

DefaultAllUsersTargetDir

Каталог установки по умолчанию для всех пользователей

%ProgramFiles%\Python X.Y или %ProgramFiles(x86)%\Python X.Y

DefaultJustForMeTargetDir

Каталог установки по умолчанию для установок «просто для меня

%LocalAppData%\Programs\Python\PythonXY или %LocalAppData%\Programs\Python\PythonXY-32 или %LocalAppData%\Programs\Python\PythonXY-64

DefaultCustomTargetDir

Каталог установки по умолчанию, отображаемый в пользовательском интерфейсе

(пусто)

AssociateFiles

Создайте ассоциации файлов, если программа запуска также установлена.

1

CompileAll

Скомпилируйте все файлы .py в .pyc.

0

PrependPath

Добавьте каталоги install и Scripts в PATH и добавьте .PY в PATHEXT.

0

AppendPath

Добавьте каталоги install и Scripts в PATH и добавьте .PY в PATHEXT.

0

Ярлыки

Создайте ярлыки для интерпретатора, документации и IDLE, если он установлен.

1

Включить_док

Установите руководство по Python

1

Включить_отладку

Установите отладочные двоичные файлы

0

Include_dev

Установите заголовки и библиотеки разработчика. Пропуск этого пункта может привести к неработоспособной установке.

1

Include_exe

Установите python.exe и связанные с ним файлы. Отсутствие этого пункта может привести к нерабочей установке.

1

Include_launcher

Установите Python Launcher для Windows.

1

InstallLauncherAllUsers

Устанавливает программу запуска для всех пользователей. Также требует, чтобы для Include_launcher было установлено значение 1

1

Include_lib

Установите стандартную библиотеку и модули расширения. Пропуск этого пункта может привести к неработоспособной установке.

1

Включить_пип

Установите поставляемые в комплекте pip и setuptools

1

Включить_символы

Установите отладочные символы (*.pdb)

0

Включить_tcltk

Установите поддержку Tcl/Tk и IDLE

1

Включить_тест

Установите набор тестов стандартной библиотеки

1

Включить_инструменты

Установите скрипты утилит

1

LauncherOnly

Устанавливает только пусковую установку. Это отменяет большинство других вариантов.

0

SimpleInstall

Отключите большинство пользовательских интерфейсов при установке

0

SimpleInstallDescription

Пользовательское сообщение, отображаемое при использовании упрощенного пользовательского интерфейса установки.

(пусто)

Например, чтобы беззвучно установить стандартную, общесистемную установку Python, вы можете использовать следующую команду (из поднятой командной строки):

python-3.9.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0

Чтобы пользователи могли легко установить личную копию Python без тестового пакета, вы можете создать ярлык с помощью следующей команды. Она отобразит упрощенную начальную страницу и запретит ее настройку:

python-3.9.0.exe InstallAllUsers=0 Include_launcher=0 Include_test=0
    SimpleInstall=1 SimpleInstallDescription="Just for me, no test suite."

(Обратите внимание, что при удалении пусковой установки также удаляются ассоциации файлов, и это рекомендуется только при установке на одного пользователя, если установка всей системы также включала пусковую установку).

Перечисленные выше опции можно также указать в файле с именем unattend.xml, который находится рядом с исполняемым файлом. В этом файле указывается список опций и значений. Если значение предоставляется в качестве атрибута, оно по возможности преобразуется в число. Значения, предоставленные в виде текста элемента, всегда оставляются в виде строк. В этом примере заданы те же опции, что и в предыдущем примере:

<Options>
    <Option Name="InstallAllUsers" Value="no" />
    <Option Name="Include_launcher" Value="0" />
    <Option Name="Include_test" Value="no" />
    <Option Name="SimpleInstall" Value="yes" />
    <Option Name="SimpleInstallDescription">Just for me, no test suite</Option>
</Options>

4.1.4. Установка без загрузки

Поскольку некоторые функции Python не включены в первоначальную загрузку программы установки, их выбор может потребовать подключения к Интернету. Чтобы избежать этой необходимости, все возможные компоненты могут быть загружены по требованию, чтобы создать полный макет, который больше не будет требовать подключения к Интернету, независимо от выбранных функций. Обратите внимание, что размер такой загрузки может быть больше, чем требуется, но при большом количестве установок очень полезно иметь локальную кэшированную копию.

Выполните следующую команду в командной строке, чтобы загрузить все необходимые файлы. Не забудьте заменить python-3.9.0.exe на фактическое имя вашего инсталлятора, а также создать макеты в собственных каталогах, чтобы избежать столкновения файлов с одинаковыми именами.

python-3.9.0.exe /layout [optional target directory]

Вы также можете указать параметр /quiet, чтобы скрыть отображение прогресса.

4.1.5. Изменение установки

После установки Python вы можете добавлять или удалять функции с помощью инструмента «Программы и функции», который входит в состав Windows. Выберите запись Python и выберите «Удалить/изменить», чтобы открыть программу установки в режиме обслуживания.

«Изменить» позволяет вам добавлять или удалять функции, изменяя флажки - неизменные флажки не будут ничего устанавливать или удалять. Некоторые параметры нельзя изменить в этом режиме, например, директорию установки; чтобы изменить их, вам придется полностью удалить, а затем переустановить Python.

«Восстановление» проверит все файлы, которые должны быть установлены с использованием текущих настроек, и заменит все, которые были удалены или изменены.

«Деинсталляция» полностью удалит Python, за исключением Python Launcher для Windows, у которого есть своя запись в Programs and Features.

4.1.6. Установка свободно распространяемых двоичных файлов

Added in version 3.13: (Экспериментальный)

Примечание

Все, что описано в этом разделе, считается экспериментальным, и следует ожидать изменений в будущих версиях.

Чтобы установить предварительно собранные двоичные файлы с включенной свободной потоковой обработкой (см. PEP 703), необходимо выбрать «Customize installation». На второй странице опций есть флажок «Download free-threaded binaries».

../_images/win_install_freethreaded.png

При выборе этой опции дополнительные исполняемые файлы будут загружены и установлены в то же место, что и основная установка Python. Основной исполняемый файл называется python3.13t.exe, а другие исполняемые файлы получают либо суффикс t, либо полный суффикс ABI. Исходные файлы Python и зависимости от сторонних разработчиков используются совместно с основной установкой.

Свободнопоточная версия регистрируется как обычная установка Python с тегом 3.13t (с суффиксом -32 или -arm64, как обычно для этих платформ). Это позволяет инструментам обнаружить ее, а Python Launcher для Windows - поддерживать py.exe -3.13t. Обратите внимание, что программа запуска будет интерпретировать py.exe -3 (или python3 shebang) как «последнюю установку 3.x», которая предпочтет свободно распространяемые двоичные файлы обычным, а py.exe -3.13 - нет. Если вы используете короткий стиль опции, вы можете предпочесть не устанавливать двоичные файлы с поддержкой свободных потоков в данный момент.

Чтобы указать опцию установки в командной строке, используйте Include_freethreaded=1. Инструкции по упреждающей загрузке дополнительных двоичных файлов для автономной установки см. в разделе Установка без загрузки. Опции включения отладочных символов и двоичных файлов также применимы к сборкам с поддержкой свободных потоков.

Также доступны свободно распространяемые двоичные файлы on nuget.org.

4.2. Пакет Microsoft Store

Added in version 3.7.2.

Пакет Microsoft Store представляет собой легко устанавливаемый интерпретатор Python, предназначенный в основном для интерактивного использования, например, студентами.

Чтобы установить пакет, убедитесь, что у вас установлены последние обновления Windows 10, и найдите в приложении Microsoft Store «Python 3.14». Убедитесь, что выбранное вами приложение опубликовано Python Software Foundation, и установите его.

Предупреждение

Python всегда будет доступен бесплатно в Microsoft Store. Если вас просят заплатить за него, значит, вы выбрали неправильный пакет.

После установки Python можно запустить, найдя его в Пуске. Кроме того, он будет доступен из любой командной строки или сеанса PowerShell, если набрать python. Кроме того, pip и IDLE можно использовать, набрав pip или idle. IDLE также можно найти в Пуске.

Все три команды также доступны с суффиксами номера версии, например, как python3.exe и python3.x.exe, а также python.exe (где 3.x - это конкретная версия, которую вы хотите запустить, например 3.14). Откройте «Manage App Execution Aliases» через Start, чтобы выбрать, какая версия Python связана с каждой командой. Рекомендуется убедиться, что pip и idle соответствуют той версии python, которая выбрана.

Виртуальные среды можно создавать с помощью python -m venv, активировать и использовать как обычно.

Если вы установили другую версию Python и добавили ее в переменную PATH, она будет доступна как python.exe, а не как версия из Microsoft Store. Чтобы получить доступ к новой установке, используйте python3.exe или python3.x.exe.

Программа запуска py.exe обнаружит эту установку Python, но предпочтет установку из традиционной программы установки.

Чтобы удалить Python, откройте «Настройки» и используйте «Приложения и возможности», или найдите Python в «Пуске», щелкните правой кнопкой мыши и выберите «Удалить». При деинсталляции будут удалены все пакеты, которые вы установили непосредственно в эту установку Python, но не будут удалены виртуальные среды

4.2.1. Известные проблемы

4.2.1.1. Перенаправление локальных данных, реестра и временных путей

Из-за ограничений на приложения Microsoft Store скрипты Python могут не иметь полного доступа на запись к общим местам, таким как TEMP и реестр. Вместо этого запись будет производиться в частную копию. Если ваши сценарии должны изменять общие местоположения, вам нужно будет установить полный инсталлятор.

Во время выполнения Python будет использовать частную копию известных папок Windows и реестра. Например, если переменная окружения %APPDATA% равна c:\Users\<user>\AppData\, то при записи в C:\Users\<user>\AppData\Local будет записываться в C:\Users\<user>\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\Local\.

При чтении файлов Windows возвращает файл из личной папки, а если таковой не существует, то из реального каталога Windows. Например, при чтении C:\Windows\System32 возвращается содержимое C:\Windows\System32 плюс содержимое C:\Program Files\WindowsApps\package_name\VFS\SystemX86.

Вы можете найти реальный путь к любому существующему файлу, используя os.path.realpath():

>>> import os
>>> test_file = 'C:\\Users\\example\\AppData\\Local\\test.txt'
>>> os.path.realpath(test_file)
'C:\\Users\\example\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\\LocalCache\\Local\\test.txt'

При записи в реестр Windows возможны следующие варианты поведения:

  • Чтение из HKLM\\Software разрешено, а результаты объединяются с файлом registry.dat в пакете.

  • Запись в HKLM\\Software запрещена, если соответствующий ключ/значение существует, т.е. модификация существующих ключей.

  • Запись в HKLM\\Software разрешена, если соответствующий ключ/значение не существует в пакете и пользователь имеет правильные права доступа.

Для получения более подробной информации о технической основе этих ограничений обратитесь к документации Microsoft по упакованным приложениям с полным доверием, которая в настоящее время доступна по адресу docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-behind-the-scenes.

4.3. Пакеты nuget.org

Added in version 3.5.2.

Пакет nuget.org - это уменьшенная среда Python, предназначенная для использования в системах непрерывной интеграции и сборки, которые не имеют общесистемной установки Python. Хотя nuget - это «менеджер пакетов для .NET», он также отлично подходит для пакетов, содержащих инструменты времени сборки.

Посетите nuget.org, чтобы получить самую свежую информацию об использовании nuget. Ниже приводится краткое изложение, достаточное для разработчиков Python.

Инструмент командной строки nuget.exe можно загрузить непосредственно из https://aka.ms/nugetclidl, например, с помощью curl или PowerShell. С помощью этого инструмента последняя версия Python для 64- или 32-битных машин устанавливается с помощью:

nuget.exe install python -ExcludeVersion -OutputDirectory .
nuget.exe install pythonx86 -ExcludeVersion -OutputDirectory .

Чтобы выбрать конкретную версию, добавьте -Version 3.x.y. Выходной каталог может быть изменен с ., и пакет будет установлен в подкаталог. По умолчанию подкаталог называется так же, как и пакет, и без опции -ExcludeVersion это имя будет включать конкретную установленную версию. Внутри подкаталога находится каталог tools, содержащий установку Python:

# Without -ExcludeVersion
> .\python.3.5.2\tools\python.exe -V
Python 3.5.2

# With -ExcludeVersion
> .\python\tools\python.exe -V
Python 3.5.2

Как правило, пакеты nuget не подлежат обновлению, поэтому новые версии следует устанавливать рядом и ссылаться на них, используя полный путь. В качестве альтернативы удалите каталог пакета вручную и установите его снова. Многие системы CI делают это автоматически, если не сохраняют файлы между сборками.

Рядом с каталогом tools находится каталог build\native. Он содержит файл свойств MSBuild python.props, который может быть использован в проекте на C++ для ссылки на установку Python. Включение настроек автоматически использует заголовки и библиотеки импорта в вашей сборке.

Информационные страницы пакета на nuget.org: www.nuget.org/packages/python для 64-битной версии, www.nuget.org/packages/pythonx86 для 32-битной версии и www.nuget.org/packages/pythonarm64 для версии ARM64

4.3.1. Свободнопоточные пакеты

Added in version 3.13: (Экспериментальный)

Примечание

Все, что описано в этом разделе, считается экспериментальным, и следует ожидать изменений в будущих версиях.

Пакеты, содержащие двоичные файлы с поддержкой свободных потоков, называются python-freethreaded для 64-битной версии, pythonx86-freethreaded для 32-битной версии и pythonarm64-freethreaded для версии ARM64. Эти пакеты содержат точки входа python3.13t.exe и python.exe, обе из которых работают в режиме свободных потоков.

4.4. Встраиваемый пакет

Added in version 3.5.

Встроенный дистрибутив - это ZIP-файл, содержащий минимальное окружение Python. Он предназначен для работы в составе другого приложения, а не для прямого доступа конечных пользователей.

После извлечения встроенный дистрибутив (почти) полностью изолирован от пользовательской системы, включая переменные окружения, настройки системного реестра и установленные пакеты. Стандартная библиотека включена в ZIP в виде предварительно скомпилированных и оптимизированных файлов .pyc, а также python3.dll, python37.dll, python.exe и pythonw.exe. Tcl/tk (включая все зависимые компоненты, такие как Idle), pip и документация Python не включены.

Примечание

Встроенный дистрибутив не включает в себя Microsoft C Runtime, и за его предоставление отвечает программа установки приложения. Время выполнения может быть уже установлено на систему пользователя ранее или автоматически через Windows Update, и его можно обнаружить, найдя ucrtbase.dll в системном каталоге.

Пакеты сторонних разработчиков должны устанавливаться программой установки приложений вместе со встроенным дистрибутивом. Использование pip для управления зависимостями, как при обычной установке Python, в этом дистрибутиве не поддерживается, хотя при определенной осторожности можно включить и использовать pip для автоматического обновления. В целом, пакеты сторонних разработчиков должны рассматриваться как часть приложения («vendoring»), чтобы разработчик мог обеспечить совместимость с новыми версиями, прежде чем предоставлять обновления пользователям.

Ниже описаны два рекомендуемых варианта использования этого дистрибутива.

4.4.1. Приложение Python

Приложения, написанные на Python, не обязательно должны быть известны пользователям. В этом случае можно использовать встроенный дистрибутив, чтобы включить частную версию Python в установочный пакет. В зависимости от того, насколько прозрачным должно быть приложение (или, наоборот, насколько профессиональным оно должно выглядеть), есть два варианта.

Использование специализированного исполняемого файла в качестве пусковой установки требует некоторого кодирования, но обеспечивает наиболее прозрачный опыт для пользователей. При использовании специализированной программы запуска нет никаких очевидных признаков того, что программа запущена на Python: значки могут быть настроены, информация о компании и версии может быть указана, а ассоциации файлов ведут себя должным образом. В большинстве случаев пользовательская программа запуска должна просто уметь вызывать Py_Main с жестко заданной командной строкой.

Более простой подход - предоставить пакетный файл или созданный ярлык, который напрямую вызывает python.exe или pythonw.exe с необходимыми аргументами командной строки. В этом случае приложение будет выглядеть как Python, а не как его реальное имя, и пользователям будет трудно отличить его от других запущенных процессов Python или ассоциаций файлов.

При последнем подходе пакеты должны быть установлены в виде директорий рядом с исполняемым файлом Python, чтобы обеспечить их доступность по пути. При использовании специализированной программы запуска пакеты могут быть расположены в других местах, так как есть возможность указать путь поиска перед запуском приложения.

4.4.2. Встраивание Python

Приложения, написанные на родном коде, часто требуют использования какого-либо языка сценариев, и для этого можно использовать встроенный дистрибутив Python. Как правило, большая часть приложения написана на родном коде, а некоторая часть будет либо вызывать python.exe, либо напрямую использовать python3.dll. В любом случае извлечения встроенного дистрибутива в подкаталог установки приложения достаточно, чтобы обеспечить загружаемый интерпретатор Python.

Как и в случае с использованием приложений, пакеты можно устанавливать в любое место, поскольку есть возможность указать пути поиска перед инициализацией интерпретатора. В остальном принципиальных различий между использованием встроенного дистрибутива и обычной установкой нет.

4.5. Альтернативные комплекты

Помимо стандартного дистрибутива CPython, существуют модифицированные пакеты, включающие дополнительную функциональность. Ниже приведен список популярных версий и их ключевые особенности:

ActivePython

Инсталлятор с многоплатформенной совместимостью, документацией, PyWin32

Anaconda

Популярные научные модули (такие как numpy, scipy и pandas) и менеджер пакетов conda.

Enthought Deployment Manager

«Среда и менеджер пакетов Python нового поколения».

Ранее Enthought предоставляла Canopy, но она reached end of life in 2016.

WinPython

Windows-специфичный дистрибутив с готовыми научными пакетами и инструментами для их создания.

Обратите внимание, что эти пакеты могут не включать последние версии Python или других библиотек, а также не поддерживаются основной командой Python.

4.6. Настройка Python

Чтобы удобно запускать Python из командной строки, можно изменить некоторые переменные окружения по умолчанию в Windows. Хотя программа установки предоставляет возможность настроить переменные PATH и PATHEXT для вас, это надежно только при единичной, общесистемной установке. Если вы регулярно используете несколько версий Python, подумайте о том, чтобы использовать Python Launcher для Windows.

4.6.1. Экскурс: Установка переменных окружения

Windows позволяет настраивать переменные окружения как постоянно на уровне пользователя и системы, так и временно в командной строке.

Чтобы временно установить переменные окружения, откройте Command Prompt и используйте команду set:

C:\>set PATH=C:\Program Files\Python 3.9;%PATH%
C:\>set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
C:\>python

Эти изменения будут применяться ко всем последующим командам, выполняемым в этой консоли, и будут унаследованы всеми приложениями, запущенными из консоли.

Включение имени переменной в знаки процента приведет к расширению существующего значения, что позволит вам добавить новое значение в начало или конец. Изменение PATH путем добавления в начало каталога, содержащего python.exe, - распространенный способ обеспечить запуск правильной версии Python.

Чтобы навсегда изменить переменные среды по умолчанию, нажмите кнопку Пуск и найдите «редактировать переменные среды», или откройте Свойства системы, Advanced system settings и нажмите кнопку Environment Variables. В этом диалоговом окне вы можете добавить или изменить переменные пользователя и системы. Чтобы изменить системные переменные, вам нужен неограниченный доступ к машине (т. е. права администратора).

Примечание

Windows конкатенирует переменные пользователя после переменных системы, что может привести к неожиданным результатам при изменении PATH.

Переменная PYTHONPATH используется всеми версиями Python, поэтому вам не следует постоянно настраивать ее, если только перечисленные пути не содержат код, совместимый со всеми установленными у вас версиями Python.

См.также

https://docs.microsoft.com/en-us/windows/win32/procthread/environment-variables

Обзор переменных окружения в Windows

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/set_1

Команда set для временного изменения переменных окружения

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx

Команда setx, предназначенная для постоянного изменения переменных окружения

4.6.2. Поиск исполняемого файла Python

Изменено в версии 3.5.

Помимо использования автоматически созданного пункта меню «Пуск» для интерпретатора Python, вам может понадобиться запустить Python в командной строке. В программе установки есть опция, позволяющая настроить это.

На первой странице программы установки можно выбрать опцию «Добавить Python в PATH», чтобы программа добавила место установки в папку PATH. Также добавляется расположение папки Scripts\. Таким образом, вы можете ввести python для запуска интерпретатора и pip для программы установки пакета. Таким образом, вы также можете выполнять свои скрипты с помощью опций командной строки, см. документацию Командная строка.

Если вы не включили эту опцию во время установки, вы всегда можете повторно запустить программу установки, выбрать Modify и включить ее. Кроме того, вы можете вручную изменить PATH, используя указания в Экскурс: Установка переменных окружения. Переменная окружения PATH должна включать каталог вашей установки Python, отделенный точкой с запятой от других записей. Пример переменной может выглядеть следующим образом (при условии, что первые две записи уже существуют):

C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Python 3.9

4.7. Режим UTF-8

Added in version 3.7.

Windows по-прежнему использует устаревшие кодировки для системной кодировки (кодовая страница ANSI). В Python она используется для кодировки текстовых файлов по умолчанию (например, locale.getencoding()).

Это может вызвать проблемы, поскольку UTF-8 широко используется в Интернете и большинстве Unix-систем, включая WSL (Windows Subsystem for Linux).

Вы можете использовать Python UTF-8 Mode, чтобы изменить кодировку текста по умолчанию на UTF-8. Вы можете включить Python UTF-8 Mode с помощью опции командной строки -X utf8 или переменной окружения PYTHONUTF8=1. См. раздел PYTHONUTF8 о включении режима UTF-8 и Экскурс: Установка переменных окружения о том, как изменять переменные окружения.

Если включена опция Python UTF-8 Mode, вы можете использовать системную кодировку (ANSI Code Page) с помощью кодека «mbcs».

Обратите внимание, что добавление PYTHONUTF8=1 к переменным окружения по умолчанию повлияет на все приложения Python 3.7+ в вашей системе. Если у вас есть приложения Python 3.7+, которые полагаются на устаревшую системную кодировку, рекомендуется временно установить переменную окружения или использовать опцию командной строки -X utf8.

Примечание

Даже если режим UTF-8 отключен, Python по умолчанию использует UTF-8 в Windows:

  • Консольный ввод/вывод, включая стандартный ввод/вывод (подробнее см. PEP 528).

  • В качестве параметра используется filesystem encoding (подробнее см. PEP 529).

4.8. Python Launcher для Windows

Added in version 3.3.

Python launcher для Windows - это утилита, которая помогает находить и запускать различные версии Python. Она позволяет скриптам (или командной строке) указать предпочтение определенной версии Python, и она будет найдена и запущена.

В отличие от переменной PATH, программа запуска будет правильно выбирать наиболее подходящую версию Python. Она предпочтет установку на одного пользователя, а не на всю систему, и будет упорядочивать по версии языка, а не по самой последней установленной версии.

Изначально пусковая установка была указана в PEP 397.

4.8.1. Начало работы

4.8.1.1. Из командной строки

Изменено в версии 3.6.

При общесистемной установке Python 3.3 и более поздних версий программа запуска будет размещена на вашем PATH. Программа запуска совместима со всеми доступными версиями Python, поэтому не имеет значения, какая версия установлена. Чтобы проверить, что программа запуска доступна, выполните следующую команду в Командной строке:

py

Вы должны обнаружить, что последняя версия Python, которую вы установили, запущена - ее можно завершить обычным образом, а все дополнительные аргументы командной строки будут отправлены непосредственно в Python.

Если у вас установлено несколько версий Python (например, 3.7 и 3.14), вы заметили, что Python 3.14 был запущен - чтобы запустить Python 3.7, попробуйте выполнить команду:

py -3.7

Если вам нужна последняя версия Python 2, которая у вас установлена, попробуйте выполнить команду:

py -2

Если вы видите следующую ошибку, значит, у вас не установлена программа запуска:

'py' is not recognized as an internal or external command,
operable program or batch file.

Команда:

py --list

отображает текущую установленную версию (версии) Python.

Аргумент -x.y - это краткая форма аргумента -V:Company/Tag, который позволяет выбрать конкретную среду выполнения Python, включая те, которые могли быть получены не с сайта python.org. Любая среда выполнения, зарегистрированная по команде PEP 514, будет доступна для обнаружения. Команда --list перечисляет все доступные среды выполнения, используя формат -V:.

При использовании аргумента -V: указание компании ограничивает выбор только режимами выполнения от этого провайдера, а указание только тега приводит к выбору от всех провайдеров. Обратите внимание, что отсутствие косой черты подразумевает тег:

# Select any '3.*' tagged runtime
py -V:3

# Select any 'PythonCore' released runtime
py -V:PythonCore/

# Select PythonCore's latest Python 3 runtime
py -V:PythonCore/3

Короткая форма аргумента (-3) выбирает только из основных релизов Python, но не из других дистрибутивов. Однако более длинная форма (-V:3) будет выбирать из любого.

Компания сопоставляется с полной строкой, без учета регистра. Тег сопоставляется либо с полной строкой, либо с префиксом, если следующий символ - точка или дефис. Это позволяет -V:3.1 соответствовать 3.1-32, но не 3.10. Теги сортируются с помощью числового порядка (3.10 новее 3.1), но сравниваются с помощью текстового (-V:3.01 не совпадает с 3.1).

4.8.1.2. Виртуальные среды

Added in version 3.5.

Если программа запускается без явного указания версии Python, а виртуальная среда (созданная с помощью модуля стандартной библиотеки venv или внешнего инструмента virtualenv) активна, то программа запуска запустит интерпретатор виртуальной среды, а не глобальный. Чтобы запустить глобальный интерпретатор, либо деактивируйте виртуальную среду, либо явно укажите глобальную версию Python.

4.8.1.3. Из сценария

Давайте создадим тестовый Python-скрипт - создадим файл с именем hello.py со следующим содержимым

#! python
import sys
sys.stdout.write("hello from Python %s\n" % (sys.version,))

Из каталога, в котором находится hello.py, выполните команду:

py hello.py

Вы должны заметить, что выводится номер версии вашей последней установки Python 2.x. Теперь попробуйте изменить первую строку на:

#! python3

При повторном выполнении команды теперь будет выведена последняя информация о Python 3.x. Как и в вышеприведенных примерах командной строки, вы можете указать более явный квалификатор версии. Предположим, что у вас установлен Python 3.7, попробуйте изменить первую строку на #! python3.7, и вы увидите, что выводится информация о версии 3.7.

Обратите внимание, что в отличие от интерактивного использования, «голый» «python» будет использовать последнюю версию Python 2.x, которая у вас установлена. Это сделано для обратной совместимости и для совместимости с Unix, где команда python обычно относится к Python 2.

4.8.1.4. Из ассоциаций файлов

При установке программа запуска должна быть связана с файлами Python (т. е. с файлами .py, .pyw, .pyc). Это означает, что при двойном щелчке на одном из этих файлов в проводнике Windows будет использоваться программа запуска, и поэтому вы можете использовать те же средства, что описаны выше, чтобы скрипт указывал версию, которая должна использоваться.

Главное преимущество этого способа заключается в том, что одна программа запуска может одновременно поддерживать несколько версий Python в зависимости от содержимого первой строки.

4.8.2. Линии Шебанг

Если первая строка файла сценария начинается с #!, она называется строкой «shebang». В Linux и других Unix-подобных операционных системах есть встроенная поддержка таких строк, и они обычно используются в таких системах для указания того, как должен быть выполнен скрипт. Эта программа запуска позволяет использовать те же средства для скриптов Python в Windows, и приведенные выше примеры демонстрируют их применение.

Чтобы строки shebang в сценариях Python можно было переносить между Unix и Windows, эта программа запуска поддерживает ряд «виртуальных» команд, указывающих, какой интерпретатор использовать. Поддерживаются следующие виртуальные команды:

  • /usr/bin/env

  • /usr/bin/python

  • /usr/local/bin/python

  • python

Например, если первая строка вашего сценария начинается с

#! /usr/bin/python

Будет найден и использован Python по умолчанию или активная виртуальная среда. Поскольку многие сценарии Python, написанные для работы на Unix, уже содержат эту строку, вы должны обнаружить, что эти сценарии могут быть использованы программой запуска без изменений. Если вы пишете новый скрипт под Windows, который, как вы надеетесь, будет полезен на Unix, вам следует использовать одну из строк shebang, начинающуюся с /usr.

Любая из перечисленных выше виртуальных команд может быть дополнена явным указанием версии (либо только мажорной, либо мажорной и минорной). Кроме того, можно запросить 32-битную версию, добавив «-32» после мажорной версии. То есть /usr/bin/python3.7-32 запросит использование 32-битного Python 3.7. Если активно виртуальное окружение, то версия будет проигнорирована и будет использоваться окружение.

Added in version 3.7: Начиная с python launcher 3.7 можно запросить 64-битную версию с помощью суффикса «-64». Кроме того, можно указать мажор и архитектуру без минора (т.е. /usr/bin/python3-64).

Изменено в версии 3.11: Суффикс «-64» устарел и теперь подразумевает «любую архитектуру, которая не является доказательно i386/32-битной». Чтобы запросить конкретное окружение, используйте новый аргумент -V:TAG с полным тегом.

Изменено в версии 3.13: Виртуальные команды, ссылающиеся на python, теперь предпочитают активное виртуальное окружение, а не поиск PATH. Это позволяет справиться со случаями, когда в shebang указывается /usr/bin/env python3, но python3.exe отсутствует в активном окружении.

Форма /usr/bin/env строки shebang имеет еще одно особое свойство. Прежде чем искать установленные интерпретаторы Python, эта форма выполнит поиск в исполняемом каталоге PATH исполняемого файла Python, соответствующего имени, указанному в качестве первого аргумента. Это соответствует поведению программы Unix env, которая выполняет поиск PATH. Если исполняемый файл, соответствующий первому аргументу после команды env, не найден, но аргумент начинается с python, он будет обработан, как описано для других виртуальных команд. Переменная окружения PYLAUNCHER_NO_SEARCH_PATH может быть установлена (в любое значение), чтобы пропустить этот поиск в PATH.

Строки Shebang, не соответствующие ни одному из этих шаблонов, ищутся в секции [commands] .INI file программы запуска. Это может быть использовано для обработки определенных команд таким образом, который будет удобен для вашей системы. Имя команды должно быть единственным аргументом (без пробелов в исполняемом файле shebang), а подставляемое значение - полный путь к исполняемому файлу (дополнительные аргументы, указанные в .INI, будут заключены в кавычки как часть имени файла).

[commands]
/bin/xpython=C:\Program Files\XPython\python.exe

Любые команды, не найденные в файле .INI, рассматриваются как Windows пути к исполняемому файлу, абсолютные или относительные к каталогу, содержащему файл сценария. Это удобно для сценариев, предназначенных только для Windows, например, генерируемых программой установки, поскольку такое поведение несовместимо с оболочками в стиле Unix. Эти пути могут быть заключены в кавычки и могут включать несколько аргументов, после которых добавляется путь к сценарию и все дополнительные аргументы.

4.8.3. Аргументы в строках shebang

В строках shebang также могут быть указаны дополнительные опции, передаваемые интерпретатору Python. Например, если у вас есть строка shebang:

#! /usr/bin/python -v

Тогда Python будет запущен с опцией -v.

4.8.4. Настройка

4.8.4.1. Настройка с помощью INI-файлов

Пусковая установка будет искать два .ini файла - py.ini в каталоге данных приложения текущего пользователя (%LOCALAPPDATA% или $env:LocalAppData) и py.ini в том же каталоге, что и пусковая установка. Одни и те же файлы .ini используются как для «консольной» версии программы запуска (т.е. py.exe), так и для «оконной» (т.е. pyw.exe).

Настройки, указанные в «каталоге приложений», будут иметь приоритет над настройками, расположенными рядом с исполняемым файлом, поэтому пользователь, у которого может не быть доступа на запись к файлу .ini рядом с пусковой установкой, сможет отменить команды в этом глобальном файле .ini.

4.8.4.2. Настройка версий Python по умолчанию

В некоторых случаях в команду может быть включен определитель версии, чтобы указать, какая версия Python будет использоваться командой. Определитель версии начинается с мажорного номера версии, за ним может следовать точка („.“) и спецификатор минорной версии. Кроме того, можно указать, будет ли запрашиваться 32- или 64-битная реализация, добавив «-32» или «-64».

Например, строка shebang #!python не имеет определителя версии, а #!python3 имеет определитель версии, который указывает только основную версию.

Если в команде не найдено ни одного квалификатора версии, можно установить переменную окружения PY_PYTHON, чтобы задать квалификатор версии по умолчанию. Если она не задана, по умолчанию используется значение «3». Переменная может указывать любое значение, которое может быть передано в командной строке, например «3», «3.7», «3.7-32» или «3.7-64». (Обратите внимание, что опция «-64» доступна только в программе запуска, входящей в состав Python 3.7 или более новой версии).

Если не найдено ни одного квалификатора малой версии, можно задать переменную окружения PY_PYTHON{major} (где {major} - текущий квалификатор мажорной версии, как определено выше), чтобы указать полную версию. Если такой опции не найдено, программа запуска перечислит установленные версии Python и использует последний найденный минорный релиз для основной версии, который, скорее всего, хотя и не гарантированно, будет самой последней установленной версией в этом семействе.

На 64-битной Windows с установленными 32-битной и 64-битной реализациями одной и той же (мажорной.минорной) версии Python, 64-битная версия всегда будет предпочтительнее. Это справедливо как для 32-битных, так и для 64-битных реализаций программы запуска - 32-битная программа запуска предпочтет выполнить 64-битную установку Python указанной версии, если она доступна. Это сделано для того, чтобы поведение программы запуска можно было предсказать, зная только то, какие версии установлены на компьютере, и не учитывая порядок их установки (т.е. не зная, 32- или 64-битная версия Python и соответствующая программа запуска была установлена последней). Как отмечалось выше, для изменения этого поведения в спецификаторе версии можно использовать необязательный суффикс «-32» или «-64».

Примеры:

  • Если соответствующие опции не заданы, команды python и python2 будут использовать последнюю установленную версию Python 2.x, а команда python3 - последнюю установленную версию Python 3.x.

  • Команда python3.7 вообще не будет обращаться к опциям, поскольку версии указаны полностью.

  • Если PY_PYTHON=3, то команды python и python3 будут использовать последнюю установленную версию Python 3.

  • Если PY_PYTHON=3.7-32, то команда python будет использовать 32-битную реализацию 3.7, тогда как команда python3 будет использовать последнюю установленную версию Python (PY_PYTHON вообще не учитывался, так как была указана основная версия).

  • Если PY_PYTHON=3 и PY_PYTHON3=3.7, то команды python и python3 будут использовать именно 3.7.

Помимо переменных окружения, те же параметры можно настроить в файле .INI, используемом программой запуска. Раздел в INI-файле называется [defaults], а имя ключа будет таким же, как и переменные окружения, без префикса PY_ (и обратите внимание, что имена ключей в INI-файле не чувствительны к регистру).

Например:

  • Установка PY_PYTHON=3.7 эквивалентна тому, что INI-файл содержит:

[defaults]
python=3.7
  • Установка PY_PYTHON=3 и PY_PYTHON3=3.7 эквивалентна тому, что INI-файл содержит:

[defaults]
python=3
python3=3.7

4.8.5. Диагностика

Если переменная окружения PYLAUNCHER_DEBUG установлена (в любое значение), программа запуска выведет диагностическую информацию на stderr (т.е. на консоль). Хотя эта информация умудряется быть одновременно многословной и краткой, она должна позволить вам увидеть, какие версии Python были расположены, почему была выбрана конкретная версия и какая именно командная строка использовалась для выполнения целевого Python. В первую очередь это предназначено для тестирования и отладки.

4.8.6. Сухой бег

Если переменная окружения PYLAUNCHER_DRYRUN установлена (в любое значение), программа запуска выведет команду, которую она должна была бы выполнить, но на самом деле не запустит Python. Это может быть полезно для инструментов, которые хотят использовать программу запуска для обнаружения и последующего прямого запуска Python. Обратите внимание, что команда, записанная в стандартный вывод, всегда кодируется с использованием UTF-8 и может не отображаться корректно в консоли.

4.8.7. Установка по требованию

Если переменная окружения PYLAUNCHER_ALLOW_INSTALL установлена (в любое значение), а запрашиваемая версия Python не установлена, но доступна в Microsoft Store, программа запуска попытается установить ее. Для этого может потребоваться вмешательство пользователя, и вам, возможно, придется запустить команду еще раз.

Дополнительная переменная PYLAUNCHER_ALWAYS_INSTALL заставляет программу запуска всегда пытаться установить Python, даже если он обнаружен. Это в основном предназначено для тестирования (и должно использоваться вместе с PYLAUNCHER_DRYRUN).

4.8.8. Коды возврата

Программа запуска Python может возвращать следующие коды выхода. К сожалению, нет способа отличить их от кода выхода самого Python.

Названия кодов приведены в источниках и служат только для справки. Нет никакого способа получить к ним доступ или разрешить их, кроме чтения этой страницы. Записи перечислены в алфавитном порядке названий.

Имя

Значение

Описание

RC_BAD_VENV_CFG

107

Был найден pyvenv.cfg, но он поврежден.

RC_CREATE_PROCESS

101

Не удалось запустить Python.

RC_INSTALLING

111

Установка была начата, но после ее завершения команду нужно будет выполнить заново.

RC_INTERNAL_ERROR

109

Неожиданная ошибка. Пожалуйста, сообщите об ошибке.

RC_NO_COMMANDLINE

108

Невозможно получить командную строку от операционной системы.

RC_NO_PYTHON

103

Невозможно найти запрашиваемую версию.

RC_NO_VENV_CFG

106

Требуется pyvenv.cfg, но он не найден.

4.9. Поиск модулей

Эти заметки дополняют описание в Инициализация пути поиска модуля sys.path подробными заметками о Windows.

Если файл ._pth не найден, в Windows так заполняется sys.path:

  • В начале добавляется пустая запись, соответствующая текущему каталогу.

  • Если существует переменная окружения PYTHONPATH, как описано в Переменные среды, ее записи добавляются следующими. Обратите внимание, что в Windows пути в этой переменной должны быть разделены точкой с запятой, чтобы отличить их от двоеточия, используемого в идентификаторах дисков (C:\ и т. д.).

  • Дополнительные «пути приложений» могут быть добавлены в реестр как подзамки \SOFTWARE\Python\PythonCore{version}\PythonPath в разделах HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE. Подключи, имеющие в качестве значения по умолчанию строки путей, разделенные точкой с запятой, приведут к добавлению каждого пути в sys.path. (Обратите внимание, что все известные программы установки используют только HKLM, поэтому HKCU обычно пуст).

  • Если установлена переменная окружения PYTHONHOME, то она принимается за «Python Home». В противном случае путь основного исполняемого файла Python используется для поиска «файла-земли» (либо Lib\os.py, либо pythonXY.zip), чтобы определить «дом Python». Если дом Python найден, то соответствующие подкаталоги, добавленные в sys.path (Lib, plat-win и т. д.), основываются на этой папке. В противном случае основной путь к Python строится из PythonPath, хранящегося в реестре.

  • Если дом Python не удается найти, в окружении не указан PYTHONPATH и не найдены записи в реестре, используется путь по умолчанию с относительными записями (например, .\Lib;.\plat-win и т. д.).

Если файл pyvenv.cfg найден рядом с основным исполняемым файлом или в каталоге, расположенном на один уровень выше исполняемого файла, применяются следующие варианты:

  • Если home является абсолютным путем и PYTHONHOME не задан, то этот путь используется вместо пути к основному исполняемому файлу при вычислении домашнего расположения.

Конечный результат всего этого таков:

  • При запуске python.exe или любого другого .exe в главном каталоге Python (либо установленной версии, либо непосредственно из каталога PCbuild), путь к ядру вычисляется, а пути к ядру в реестре игнорируются. Другие «пути приложений» в реестре всегда считываются.

  • Если Python размещен в другом .exe (в другом каталоге, встроен через COM и т.д.), «Дом Python» не будет вычислен, поэтому используется путь к ядру из реестра. Другие «пути приложений» в реестре всегда считываются.

  • Если Python не может найти свой дом и нет значения в реестре (замороженный .exe, какая-то очень странная установка), вы получите путь с некоторыми стандартными, но относительными путями.

Для тех, кто хочет включить Python в свое приложение или дистрибутив, следующие советы помогут избежать конфликтов с другими установками:

  • Включите в исполняемый файл файл ._pth, содержащий каталоги для включения. При этом будут игнорироваться пути, указанные в реестре и переменных окружения, а также игнорироваться site, если не указан import site.

  • Если вы загружаете python3.dll или python37.dll в свой собственный исполняемый файл, явно установите PyConfig.module_search_paths перед Py_InitializeFromConfig().

  • Очистите и/или перезапишите PYTHONPATH и установите PYTHONHOME перед запуском python.exe из вашего приложения.

  • Если вы не можете воспользоваться предыдущими предложениями (например, вы являетесь дистрибутивом, который позволяет запускать python.exe напрямую), убедитесь, что файл-земля (Lib\os.py) существует в вашем каталоге установки. (Обратите внимание, что он не будет обнаружен внутри ZIP-файла, но вместо него будет обнаружен правильно названный ZIP-файл).

Это гарантирует, что файлы в общесистемной установке не будут иметь приоритета над копией стандартной библиотеки, поставляемой вместе с вашим приложением. В противном случае у пользователей могут возникнуть проблемы при работе с приложением. Обратите внимание, что первое предложение является наилучшим, поскольку остальные могут быть подвержены влиянию нестандартных путей в реестре и пакетах пользовательских сайтов.

Изменено в версии 3.6: Добавлена поддержка файлов ._pth и удалена опция applocal из pyvenv.cfg.

Изменено в версии 3.6: Добавьте pythonXX.zip в качестве потенциального ориентира, если он находится непосредственно рядом с исполняемым объектом.

Не рекомендуется, начиная с версии 3.6: Модули, указанные в реестре под Modules (не PythonPath), могут быть импортированы с помощью importlib.machinery.WindowsRegistryFinder. Эта функция поиска включена в Windows в версии 3.6.0 и более ранних, но в будущем может потребоваться явное добавление в sys.meta_path.

4.10. Дополнительные модули

Несмотря на то, что Python стремится быть переносимым для всех платформ, есть функции, которые уникальны для Windows. Для использования этих возможностей существует несколько модулей, как в стандартной библиотеке, так и во внешней, а также фрагменты.

Стандартные модули, специфичные для Windows, документированы в Специальные службы MS Windows.

4.10.1. PyWin32

Модуль PyWin32 от Марка Хэммонда - это коллекция модулей для расширенной поддержки Windows. Сюда входят утилиты для:

PythonWin - это пример MFC-приложения, поставляемого с PyWin32. Это встраиваемая среда разработки со встроенным отладчиком.

См.также

Win32 How Do I…?

Тим Голден

Python and COM

Дэвид и Пол Бодди

4.10.2. cx_Freeze

cx_Freeze превращает скрипты Python в исполняемые программы для Windows (файлы *.exe). Сделав это, вы сможете распространять свое приложение, не требуя от пользователей установки Python.

4.11. Компиляция Python в Windows

Если вы хотите скомпилировать CPython самостоятельно, первое, что вам нужно сделать, это получить source. Вы можете скачать либо исходники последнего релиза, либо просто взять свежий checkout.

Дерево исходных текстов содержит решение для сборки и файлы проекта для Microsoft Visual Studio, который является компилятором, используемым для сборки официальных релизов Python. Эти файлы находятся в каталоге PCbuild.

Проверьте PCbuild/readme.txt для получения общей информации о процессе сборки.

Для получения информации о модулях расширения обратитесь к Создание расширений C и C++ в Windows.

4.12. Другие платформы

С постоянным развитием Python некоторые платформы, которые поддерживались ранее, больше не поддерживаются (из-за отсутствия пользователей или разработчиков). Подробную информацию о всех неподдерживаемых платформах смотрите в PEP 11.

Подробную информацию о платформах с предварительно скомпилированными установщиками см. в разделе Python for Windows.