Spec-Zone.ru › Python 3.14

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

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

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

Чтобы получить Python от команды CPython, воспользуйтесь диспетчером установки Python. Это автономный инструмент, который делает Python доступным в виде глобальных команд на вашем компьютере с Windows, интегрируется с системой и поддерживает обновления. Диспетчер установки Python можно загрузить с сайта python.org/downloads или через приложение Microsoft Store.

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

В целом мы рекомендуем создавать виртуальное окружение для каждого проекта и запускать в терминале команду <env>\Scripts\Activate, чтобы использовать его. Это обеспечивает изоляцию проектов, совместимость с течением времени и гарантирует, что в вашем сеансе будут доступны и дополнительные команды, добавленные пакетами. Создайте виртуальное окружение с помощью команды python -m venv <env path>.

Если команды python или py, похоже, не работают, см. раздел Устранение неполадок ниже. Иногда для настройки компьютера требуются дополнительные действия вручную.

Помимо диспетчера установки Python, Python также можно получить в виде пакетов NuGet. Дополнительные сведения об этих пакетах см. ниже в разделе Пакеты nuget.org.

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

4.1. Диспетчер установки Python

4.1.1. Установка

Диспетчер установки Python можно установить из приложения Microsoft Store или загрузить и установить с сайта python.org/downloads. Обе версии идентичны.

Чтобы установить приложение через Store, просто нажмите «Установить». После завершения установки откройте терминал и введите python, чтобы начать работу.

Чтобы установить файл, загруженный с сайта python.org, дважды щёлкните его и выберите «Установить» либо выполните команду Add-AppxPackage <path to MSIX> в Windows Powershell.

После установки должны стать доступны команды python, py и pymanager. Если у вас уже установлены версии Python или вы изменяли переменную PATH, возможно, потребуется удалить их или отменить внесённые изменения. Дополнительные сведения об исправлении неработающих команд см. в разделе Устранение неполадок.

При первой установке среды выполнения может появиться запрос на добавление каталога в переменную PATH. Это необязательно, если вы предпочитаете использовать команду py, но эта возможность предлагается тем, кто хочет, чтобы был доступен полный набор псевдонимов (например, python3.14.exe). По умолчанию каталог будет %LocalAppData%\Python\bin, но администратор может изменить его. Нажмите «Пуск» и найдите «Изменение переменных среды для вашей учётной записи», чтобы открыть страницу системных настроек и добавить путь.

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

Диспетчер установки Python будет автоматически обновляться до новых выпусков. Это не влияет на установленные среды выполнения Python. Удаление диспетчера установки Python не приводит к удалению сред выполнения Python.

Если в вашей среде невозможно установить MSIX, например, вы используете программное обеспечение для автоматизированного развёртывания, которое его не поддерживает, или работаете с Windows Server 2019, дополнительную информацию см. ниже в разделе Расширенная установка.

4.1.2. Основы использования

Рекомендуемая команда для запуска Python — python. Она запускает версию, запрошенную запускаемым скриптом, активное виртуальное окружение или установленную версию по умолчанию. Если настройки не изменены, по умолчанию используется последний стабильный выпуск. Если конкретная версия не запрошена и среды выполнения вообще не установлены, последняя версия будет установлена автоматически.

Во всех случаях, связанных с несколькими версиями среды выполнения, рекомендуется использовать команду py. Её можно использовать везде вместо python или более старого средства запуска py.exe. По умолчанию py ведёт себя так же, как python, но также позволяет выбирать конкретную версию с помощью параметров командной строки и управлять установками с помощью подкоманд. Они подробно описаны ниже.

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

Для каждой из этих команд также существует оконная версия, которая не создаёт окно консоли. Это команды pyw, pythonw и pywmanager. Также включена команда python3, имитирующая команду python. Она предназначена для перехвата случайного использования типичной команды POSIX в Windows, но не рассчитана на широкое использование и не рекомендуется к применению.

Чтобы запустить среду выполнения по умолчанию, выполните python или py с аргументами, которые нужно передать среде выполнения (например, файлами скриптов или запускаемым модулем):

$> py
...
$> python my-script.py
...
$> py -m this
...

Среду выполнения по умолчанию можно переопределить с помощью переменной среды PYTHON_MANAGER_DEFAULT или файла конфигурации. Сведения о параметрах конфигурации см. в разделе Конфигурация.

Для запуска конкретной среды выполнения команда py принимает параметр -V:<TAG>. Этот параметр необходимо указывать перед всеми остальными. Тег — это часть или полное обозначение среды выполнения; для сред от команды CPython он выглядит как номер версии, возможно, с указанием платформы. Для совместимости V: можно опустить, если тег относится к официальному выпуску и начинается с 3.

$> py -V:3.14 ...
$> py -V:3-arm64 ...

Для сред выполнения от других дистрибьюторов может потребоваться указать также компанию. Её следует отделить от тега косой чертой (/ или \), при этом можно указать любой префикс полного названия. Название компании можно не указывать, если оно PythonCore; тег можно не указывать (но косую черту — нельзя), если требуется последний выпуск от определённой компании.

$> py -V:Distributor\1.0 ...
$> py -V:distrib/ ...

Если версия не указана, но передан файл скрипта, скрипт будет проверен на наличие строки shebang. Это специальный формат первой строки файла, позволяющий переопределить команду. Дополнительные сведения см. в разделе Строки shebang. Если строки shebang нет или её не удаётся обработать, скрипт будет запущен с использованием среды выполнения по умолчанию.

Если вы работаете в активном виртуальном окружении, не запрашивали конкретную версию и в скрипте нет строки shebang, средой выполнения по умолчанию будет это виртуальное окружение. В таком случае команда python, вероятно, уже была переопределена, поэтому эти проверки не выполнялись. Однако такое поведение позволяет взаимозаменяемо использовать команду py.

Если среды выполнения не установлены, любая команда запуска попытается установить запрошенную версию и запустить её. Однако после установки любой версии автоматически устанавливать отсутствующую запрошенную версию будут только команды py exec ... и pymanager exec .... Другие варианты команд покажут ошибку и предложат сначала использовать py install.

4.1.3. Справка по командам

Команда py help выведет полный список поддерживаемых команд и их параметров. Для отображения справки к любой команде можно передать ей параметр -? или передать её имя команде py help.

$> py help
$> py help install
$> py install /?

Все команды поддерживают некоторые общие параметры, которые будут показаны командой py help. Эти параметры необходимо указывать после любой подкоманды. Параметры -v или --verbose увеличивают объём выводимой информации, а -vv дополнительно увеличивает его для отладки. Параметры -q или --quiet сокращают вывод, а -qq сокращает его ещё сильнее.

Параметр --config=<PATH> позволяет указать файл конфигурации для переопределения сразу нескольких настроек. Дополнительные сведения об этих файлах см. ниже в разделе Конфигурация.

4.1.4. Просмотр списка сред выполнения

$> py list [-f=|--format=<FMT>] [-1|--one] [--online|-s=|--source=<URL>] [<TAG>...]

Список установленных сред выполнения можно просмотреть с помощью команды py list. Можно добавить фильтр в виде одного или нескольких тегов (с указанием компании или без него); каждый тег может содержать префикс <, <=, >= или >, ограничивающий диапазон.

Поддерживается несколько форматов, которые можно указать с помощью параметра --format=<FMT> или -f <FMT>. Доступны форматы table (удобное для пользователя табличное представление), csv (таблица с разделителями-запятыми), json (единый объект JSON), jsonl (отдельный объект JSON для каждого результата), exe (только путь к исполняемому файлу), prefix (только путь к префиксу).

Параметр --one или -1 отображает только один результат. Если среди результатов есть среда выполнения по умолчанию, будет показана она. В противном случае показывается «наилучший» результат (понятие «наилучший» намеренно определено расплывчато, но обычно это самая новая версия). Результат, показанный командой py list --one <TAG>, будет соответствовать среде выполнения, которая была бы запущена командой py -V:<TAG>.

Параметр --only-managed исключает результаты, полученные не в результате установки с помощью диспетчера установки Python. Это полезно, чтобы определить, какие среды выполнения можно обновить или удалить командой py.

Параметр --online является сокращённой формой передачи --source=<URL> с источником по умолчанию. Передача любого из этих параметров запускает поиск в сетевом индексе сред выполнения, доступных для установки. Результат, показанный командой py list --online --one <TAG>, будет соответствовать среде выполнения, которая была бы установлена командой py install <TAG>.

$> py list --online 3.14

Для совместимости со старым средством запуска сохранены команды --list, --list-paths, -0 и -0p (например, py -0p). Они не поддерживают дополнительные параметры и выводят данные в устаревшем формате.

4.1.5. Установка сред выполнения

$> py install [-s=|--source=<URL>] [-f|--force] [-u|--update] [--dry-run] [<TAG>...]

Новые версии среды выполнения можно добавить с помощью команды py install. Можно указать один или несколько тегов; специальный тег default позволяет выбрать значение по умолчанию. Диапазоны при установке не поддерживаются.

Параметр --source=<URL> позволяет переопределить сетевой индекс, используемый для получения сред выполнения. Его можно использовать с автономным индексом, как показано в разделе Автономная установка.

Передача --force приведёт к игнорированию всех кэшированных файлов и удалению существующей установки с заменой на указанную.

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

Передача --dry-run приведёт к формированию вывода и журналов, но не изменит установки.

Передача --refresh обновит все регистрации установленных сред выполнения. Будут созданы заново ярлыки в меню «Пуск», ключи реестра и глобальные псевдонимы (например, python3.14.exe или псевдонимы для любых установленных скриптов). Они автоматически обновляются при установке любой среды выполнения, но после установки пакетов может потребоваться обновить их вручную.

Помимо перечисленных выше параметров, параметр --target распакует среду выполнения в указанную папку вместо обычной установки. Это полезно при встраивании сред выполнения в более крупные приложения. В отличие от обычной установки, py не будет знать о распакованной среде выполнения, а ярлыки в меню «Пуск» и другие ярлыки созданы не будут. Чтобы запустить среду выполнения, выполните основной исполняемый файл непосредственно из целевой папки (обычно это python.exe).

$> py install ... [-t=|--target=<PATH>] <TAG>

Команда py exec установит запрошенную среду выполнения, если она ещё не установлена. Это поведение определяется параметром конфигурации automatic_install (PYTHON_MANAGER_AUTOMATIC_INSTALL), который по умолчанию включён. Если среды выполнения вообще отсутствуют, все команды запуска выполнят автоматическую установку, если это разрешено настройкой конфигурации. Это сделано для удобства новых пользователей, но в целом не следует полагаться на такое поведение вместо команды py exec или явных команд установки.

4.1.6. Автономная установка

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

$> py install --download=<PATH> ... <TAG>...

Параметр --download=<PATH> загрузит пакеты для перечисленных тегов и создаст каталог, содержащий эти пакеты и файл index.json, пригодный для последующей установки. Весь этот каталог можно перенести на компьютер без доступа к сети и использовать для установки одной или нескольких содержащихся в нём сред выполнения:

$> py install --source="<PATH>\index.json" <TAG>...

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

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

Таким образом можно устанавливать и администрировать среды выполнения Python на компьютере без доступа к Интернету.

4.1.7. Удаление сред выполнения

$> py uninstall [-y|--yes] <TAG>...

Среды выполнения можно удалить с помощью команды py uninstall. Необходимо указать один или несколько тегов. Диапазоны здесь не поддерживаются.

Параметр --yes пропускает запрос подтверждения перед удалением.

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

$> py uninstall [-y|--yes] --purge

Диспетчер установки Python можно удалить на странице настроек Windows «Установленные приложения». Это не удалит среды выполнения: ими по-прежнему можно будет пользоваться, хотя глобальные команды python и py будут удалены. После повторной установки диспетчера установки Python вы снова сможете управлять этими средами выполнения. Чтобы полностью удалить все среды выполнения Python, перед удалением диспетчера установки Python выполните команду с параметром --purge.

4.1.8. Конфигурация

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

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

Глобальный файл конфигурации может быть настроен администратором и будет считан первым. Пользовательский файл конфигурации хранится в %AppData%\Python\pymanager.json (обратите внимание: это расположение находится в Roaming, а не в Local) и считывается следующим, переопределяя настройки из более ранних файлов. Дополнительный файл конфигурации можно указать с помощью переменной среды PYTHON_MANAGER_CONFIG или параметра командной строки --config (но не обоих одновременно). Эти расположения можно изменить с помощью параметров административной настройки, перечисленных далее.

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

Стандартные параметры конфигурации

Ключ конфигурации

Переменная среды

Описание

default_tag

PYTHON_MANAGER_DEFAULT

Предпочтительная версия по умолчанию для запуска или установки. По умолчанию это значение трактуется как последняя версия от команды CPython, не являющаяся предварительным выпуском.

default_platform

PYTHON_MANAGER_DEFAULT_PLATFORM

Предпочтительная платформа по умолчанию для запуска или установки. Она рассматривается как суффикс указанного тега, поэтому py -V:3.14 будет отдавать предпочтение установке для 3.14-64, если она существует (и default_platform — это -64), но будет использовать 3.14, если установки с тегом нет.

logs_dir

PYTHON_MANAGER_LOGS

Расположение для записи файлов журналов. По умолчанию — %TEMP%.

automatic_install

PYTHON_MANAGER_AUTOMATIC_INSTALL

Значение true разрешает автоматическую установку при запуске с помощью py exec (или с помощью py, если среды выполнения ещё не установлены). Другие команды не выполняют автоматическую установку независимо от этого параметра. По умолчанию — true.

include_unmanaged

PYTHON_MANAGER_INCLUDE_UNMANAGED

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

shebang_can_run_anything

PYTHON_MANAGER_SHEBANG_CAN_RUN_ANYTHING

Значение true разрешает строкам shebang в файлах .py запускать приложения, отличные от сред выполнения Python; значение false запрещает это. По умолчанию — true.

shebang_templates

(нет)

Соответствие шаблонов строк shebang альтернативным командам, например py -V:<tag> или подстановочной строке. Подробную информацию см. в разделе Строки shebang.

log_level

PYMANAGER_VERBOSE, PYMANAGER_DEBUG

Задаёт уровень вывода по умолчанию (0–50). По умолчанию — 20. Чем меньше значение, тем больше вывод. Переменные среды являются логическими и могут приводить к появлению дополнительного вывода при запуске, который впоследствии подавляется другими настройками.

confirm

PYTHON_MANAGER_CONFIRM

Значение true запрашивает подтверждение перед выполнением определённых действий (например, удалением); значение false отключает запрос подтверждения. По умолчанию — true.

install.source

PYTHON_MANAGER_SOURCE_URL

Переопределяет индекс, из которого загружаются новые установки.

install.enable_entrypoints

(нет)

Значение true создаёт глобальные команды для установленных пакетов (например, pip.exe). Эти команды определяются самими пакетами. Если задано значение false, глобальные команды создаются только для интерпретатора Python. По умолчанию — true. После изменения этой настройки следует выполнить py install --refresh.

list.format

PYTHON_MANAGER_LIST_FORMAT

Задаёт формат по умолчанию, используемый командой py list. По умолчанию — table.

install_dir

(нет)

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

global_dir

(нет)

Задаёт каталог для хранения глобальных команд (например, python3.14.exe и pip.exe). Чтобы команды стали доступны в терминале, этот каталог нужно добавить в переменную PATH.

download_dir

(нет)

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

Составные имена, разделённые точками, следует помещать во вложенные объекты JSON. Например, list.format следует указать как {"list": {"format": "table"}}.

4.1.9. Строки shebang

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

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

  • /usr/bin/env <ALIAS>
  • /usr/bin/env -S <ALIAS>
  • /usr/bin/<ALIAS>
  • /usr/local/bin/<ALIAS>
  • <ALIAS>

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

#! /usr/bin/python

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

В любой из перечисленных выше виртуальных команд вместо <ALIAS> можно указать псевдоним установленной среды выполнения. Иными словами, в строке shebang можно использовать любую команду, созданную в каталоге глобальных псевдонимов (который можно добавить в переменную среды PATH), даже если её нет в переменной PATH. Это позволяет использовать строки shebang, например /usr/bin/python3.12, для выбора конкретной среды выполнения.

Если среды выполнения не установлены или включена автоматическая установка, запрошенная среда выполнения будет установлена при необходимости. Сведения о параметрах конфигурации см. в разделе Конфигурация.

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

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

Начиная с версии 26.3 диспетчера установки Python в файл конфигурации можно добавлять пользовательские шаблоны shebang. Добавьте объект shebang_templates с одним элементом для каждого шаблона (строкой для сопоставления) и командой, которую следует использовать при совпадении с шаблоном. Для запуска одной из установленных сред выполнения в большинстве команд следует использовать py -V:<tag> (или pyw). Также допускается форма py -3.<version> и обычный py для запуска среды выполнения по умолчанию. Другие аргументы не поддерживаются.

{
    "shebang_templates": {
        "/usr/bin/python": "py",
        "/usr/bin/my_custom_python": "py -V:MyCustomPython/3"
    }
}

Если подставляемая команда не является py или pyw, она будет записана обратно в строку shebang, после чего продолжится обычная обработка. Если запуск произвольных исполняемых файлов разрешён, указание полного пути позволит перенаправить запуск с Python на любой исполняемый файл. Шаблон должен соответствовать либо всей строке (без учёта начальных и конечных пробелов), либо тексту до первого пробела в строке shebang.

Примечание

Поведение строк shebang в диспетчере установки Python незначительно отличается от поведения предыдущего средства запуска py.exe, а прежние параметры конфигурации больше не действуют. Если вам необходимы именно прежнее поведение или настройки, рекомендуем установить устаревшее средство запуска. Команда py устаревшего средства запуска по умолчанию переопределит аналогичную команду PyManager; для установки и удаления необходимо будет использовать команды pymanager.

4.1.10. Расширенная установка

Если установить MSIX невозможно, например на некоторых старых платформах для административного развертывания, на странице загрузок python.org доступен MSI-пакет. У этого MSI нет пользовательского интерфейса, и он может выполнять установку только для всего компьютера в расположение по умолчанию в Program Files. Он попытается изменить системную переменную среды PATH, добавив в неё путь установки, но обязательно проверьте, как это работает в вашей конфигурации.

Примечание

Windows Server 2019 — единственная поддерживаемая CPython версия Windows, которая не поддерживает MSIX. Для Windows Server 2019 следует использовать MSI.

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

Среды выполнения, установленные с помощью MSI, являются общими со средами, установленными с помощью MSIX, и устанавливаются только для текущего пользователя. Менеджер установки Python не поддерживает установку сред выполнения для всего компьютера. Чтобы имитировать установку для всего компьютера, можно запустить py install --target=<shared location> с правами администратора и добавить собственные системные изменения в PATH, реестр или меню «Пуск».

Если MSIX установлен, но команды недоступны в переменной среды PATH, их можно найти в %LocalAppData%\Microsoft\WindowsApps\PythonSoftwareFoundation.PythonManager_3847v3x7pw1km или %LocalAppData%\Microsoft\WindowsApps\PythonSoftwareFoundation.PythonManager_qbz5n2kfra8p0 — в зависимости от того, был ли пакет установлен с python.org или через Microsoft Store. Запуск исполняемого файла непосредственно из Program Files не рекомендуется.

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

$> winget install 9NQ7512CXL7T -e --accept-package-agreements --disable-interactivity

# Optionally run the configuration checker and accept all changes
$> py install --configure -y

Чтобы скачать менеджер установки Python и установить его на другой компьютер, следующая команда WinGet загрузит необходимые файлы из Store в каталог «Загрузки» (добавьте -d <location>, чтобы изменить расположение вывода). При этом также создаётся YAML-файл, который, по-видимому, не нужен: загруженный MSIX можно установить, запустив его или используя приведённые ниже команды.

$> winget download 9NQ7512CXL7T -e --skip-license --accept-package-agreements --accept-source-agreements

Для программной установки или удаления MSIX только с помощью PowerShell рекомендуется использовать командлеты PowerShell Add-AppxPackage и Remove-AppxPackage:

$> Add-AppxPackage C:\Downloads\python-manager-25.0.msix
...
$> Get-AppxPackage PythonSoftwareFoundation.PythonManager | Remove-AppxPackage

Последнюю версию можно скачать и установить в Windows, передав файл AppInstaller команде Add-AppxPackage. При этом используется MSIX с python.org. Этот способ рекомендуется только в случаях, когда установка через Store (в интерактивном режиме или с помощью WinGet) невозможна.

$> Add-AppxPackage -AppInstallerFile https://www.python.org/ftp/python/pymanager/pymanager.appinstaller

Для развертывания пакета MSIX для всех пользователей компьютера можно использовать и другие инструменты и API, но Python не считает такой сценарий поддерживаемым. Рекомендуем изучить командлет PowerShell Add-AppxProvisionedPackage, класс PackageManager из Windows или документацию и справочные материалы по используемому инструменту развертывания.

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

Обратите внимание: загружаемые из Store и с веб-сайта Python версии MSIX немного отличаются, поэтому их нельзя установить одновременно. По возможности рекомендуем использовать приведённые выше команды WinGet для загрузки пакета из Store, чтобы снизить риск конфликтующих установок. Лицензионных ограничений, которые запрещали бы использовать таким образом пакет из Store, для менеджера установки Python нет.

4.1.11. Административная конфигурация

Администраторам могут пригодиться параметры, позволяющие переопределять конфигурацию менеджера установки Python. С их помощью можно настроить локальное кэширование, отключить определённые типы ярлыков и переопределить входящее в состав пакета содержимое. Можно задать все перечисленные выше параметры конфигурации, а также параметры, приведённые ниже.

Параметры конфигурации можно переопределить в реестре, задав значения в разделе HKEY_LOCAL_MACHINE\Software\Policies\Python\PyManager, где имя значения соответствует ключу конфигурации, а тип значения — REG_SZ. Обратите внимание: сам этот раздел можно настроить, но только изменив основной файл конфигурации, распространяемый вместе с менеджером установки Python. Однако мы рекомендуем использовать значения реестра только для установки base_config в путь к JSON-файлу с полным набором переопределений. Переопределения в реестре заменяют любые другие заданные параметры, а base_config позволяет пользователям дополнительно изменять необходимые им параметры.

Обратите внимание: большинство параметров с переменными среды поддерживают эти переменные, поскольку их значения по умолчанию содержат ссылки на них. При переопределении таких параметров переменная среды больше не будет работать, если только вы не укажете другую переменную. Например, значение по умолчанию confirm — это буквально %PYTHON_MANAGER_CONFIRM%, и переменная раскрывается при загрузке. Если переопределить значение на yes, переменная среды больше не будет использоваться. Если переопределить значение на %CONFIRM%, вместо неё будет использоваться эта переменная среды.

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

Параметры административной конфигурации

Ключ конфигурации

Описание

base_config

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

user_config

Второй файл конфигурации для чтения.

additional_config

Третий файл конфигурации для чтения.

registry_override_key

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

bundled_dir

Каталог только для чтения, содержащий локально кэшированные файлы.

install.fallback_source

Путь или URL-адрес индекса, к которому следует обратиться, если основной индекс недоступен.

install.enable_shortcut_kinds

Список разрешённых типов ярлыков, разделённых запятыми (например, "pep514,start"). Разрешённые ярлыки всё ещё можно отключить с помощью disable_shortcut_kinds.

install.disable_shortcut_kinds

Список исключённых типов ярлыков, разделённых запятыми (например, "pep514,start"). Отключённые ярлыки нельзя повторно включить с помощью enable_shortcut_kinds.

install.hard_link_entrypoints

Значение True включает использование жёстких ссылок для глобальных ярлыков, чтобы экономить место на диске. Если задано значение False, исполняемый файл каждого ярлыка копируется. После изменения этого параметра выполните py install --refresh --force, чтобы обновить существующие команды. По умолчанию задано значение True. Отключение может понадобиться для устранения неполадок или на системах, в которых возникают проблемы со ссылками на файлы.

pep514_root

Расположение в реестре для чтения и записи записей PEP 514. По умолчанию — HKEY_CURRENT_USER\Software\Python.

start_folder

Папка меню «Пуск», в которую записываются ярлыки. По умолчанию — Python. Этот путь задаётся относительно папки «Программы» пользователя.

virtual_env

Путь к активной виртуальной среде. По умолчанию — %VIRTUAL_ENV%, но можно задать пустое значение, чтобы отключить обнаружение venv.

shebang_can_run_anything_silently

Значение True отключает видимые предупреждения, когда shebang запускает приложение, а не среду выполнения Python.

source_settings

Сопоставление исходных URL-адресов с параметрами, относящимися к соответствующим индексам. Если этот раздел присутствует в нескольких файлах конфигурации, параметры URL-адресов добавляются или перезаписываются, но отдельные параметры не объединяются. В настоящее время эти параметры используются только для подписей индекса.

4.1.12. Установка свободнопоточных двоичных файлов

Добавлено в версии 3.13.

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

$> py install 3.14t
$> py install 3.14t-arm64
$> py install 3.14t-32

Установка и регистрация выполняются как обычно. Если у вас не установлены другие среды выполнения, команда python запустит эту среду. В противном случае потребуется использовать py -V:3.14t ... или, если вы добавили каталог глобальных псевдонимов в переменную среды PATH, команды python3.14t.exe.

4.1.13. Подписи индекса

Добавлено в версии 26.2.

Файлы индекса можно подписывать, чтобы обнаруживать подмену. Подпись — это файл каталога, расположенный по тому же URL-адресу, что и индекс, с добавленным к имени файла .cat. Файл каталога должен содержать хеш соответствующего файла индекса и быть подписан действительной подписью Authenticode. Это позволяет создавать подпись с помощью стандартных инструментов (в Windows); можно использовать любой сертификат, если операционная система клиента уже доверяет его центру сертификации (корневому ЦС).

Подписи индекса загружаются и проверяются только в том случае, если раздел source_settings локальной конфигурации содержит URL-адрес индекса и параметр requires_signature имеет значение True либо если в JSON-файле индекса параметру requires_signature задано значение True. Если этот параметр задан в локальной конфигурации, настройки индекса игнорируются даже в том случае, когда его значение — False.

Помимо требования действительной подписи, параметры required_root_subject и required_publisher_subject позволяют дополнительно ограничить принимаемые подписи на основе полей Subject сертификата. Каждый атрибут, указанный в конфигурации, должен совпадать с атрибутом сертификата (дополнительные атрибуты сертификата игнорируются). Обычно указывают CN= для общего имени, O= для подразделения организации и C= для страны издателя.

Наконец, параметр required_publisher_eku позволяет требовать наличия у сертификата издателя определённого расширенного использования ключа (EKU). Например, EKU 1.3.6.1.5.5.7.3.3 означает, что сертификат предназначен для подписывания кода, а не для аутентификации сервера или клиента. В сочетании с определённым корневым ЦС это даёт дополнительный способ проверить подлинность подписи.

Ниже приведён пример раздела source_settings из файла конфигурации. В этом случае издатель ленты однозначно определяется сочетанием корневого центра Microsoft Identity Verification и EKU, назначенного этим центром. Для этого случая подпись будет находиться по адресу https://www.python.org/ftp/python/index-windows.json.cat.

{
  "source_settings": {
    "https://www.python.org/ftp/python/index-windows.json": {
      "requires_signature": true,
      "required_root_subject": "CN=Microsoft Identity Verification Root Certificate Authority 2020",
      "required_publisher_subject": "CN=Python Software Foundation",
      "required_publisher_eku": "1.3.6.1.4.1.311.97.608394634.79987812.305991749.578777327"
    }
  }
}

Те же параметры можно указать и в файле index.json. В этом случае корневой центр и EKU не указаны, то есть подпись должна быть действительной и иметь определённое общее имя в сертификате издателя, но другие проверки не выполняются.

{
  "requires_signature": true,
  "required_publisher_subject": "CN=Python Software Foundation",
  "versions": [
    // ...
  ]
}

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

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

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

"source_settings": {
  "https://www.example.com/feed-with-invalid-signature.json": {
    "requires_signature": false
  }
}

4.1.14. Устранение неполадок

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

Устранение неполадок

Проблема

Что попробовать

При вводе python в терминале появляется ошибка «команда не найдена» или открывается приложение Store.

Вы установили менеджер установки Python?

Нажмите «Пуск», откройте «Управление псевдонимами выполнения приложений» и проверьте, включены ли псевдонимы для «Python (по умолчанию)». Если они уже включены, попробуйте отключить и снова включить их, чтобы обновить команду. Возможно, также потребуется обновить команды «Python (по умолчанию, с окном)» и «Менеджер установки Python».

Проверьте, работают ли команды py и pymanager.

Убедитесь, что переменная PATH содержит запись для %UserProfile%\AppData\Local\Microsoft\WindowsApps. По умолчанию операционная система добавляет эту запись один раз после остальных пользовательских путей. Если её удалить, ярлыки не будут найдены.

При вводе py в терминале появляется ошибка «команда не найдена».

Вы установили менеджер установки Python?

Нажмите «Пуск», откройте «Управление псевдонимами выполнения приложений» и проверьте, включены ли псевдонимы для «Python (по умолчанию)». Если они уже включены, попробуйте отключить и снова включить их, чтобы обновить команду. Возможно, также потребуется обновить команды «Python (по умолчанию, с окном)» и «Менеджер установки Python».

Убедитесь, что переменная PATH содержит запись для %UserProfile%\AppData\Local\Microsoft\WindowsApps. По умолчанию операционная система добавляет эту запись один раз после остальных пользовательских путей. Если её удалить, ярлыки не будут найдены.

При вводе команд в терминале py выдаёт ошибку «не удаётся открыть файл».

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

python запускает не ту же среду выполнения, что и py

Нажмите «Пуск», откройте «Установленные приложения», найдите имеющиеся среды выполнения Python и либо удалите их, либо выберите «Изменить» и отключите параметры PATH.

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

python и py запускают не ту среду выполнения, которую я ожидал(а)

Проверьте переменную среды PYTHON_MANAGER_DEFAULT или конфигурацию default_tag. Команда py list покажет значение по умолчанию, определённое на основе этих параметров.

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

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

pythonw или pyw запускают не ту же среду выполнения, что и python или py

Нажмите «Пуск», откройте «Управление псевдонимами выполнения приложений» и проверьте, что псевдонимы pythonw.exe и pyw.exe настроены так же, как остальные.

При вводе pip в терминале появляется ошибка «команда не найдена».

Вы активировали виртуальную среду? Запустите в терминале сценарий .venv\Scripts\activate, чтобы активировать её.

Пакет может быть доступен, но в нём может отсутствовать созданный исполняемый файл. Рекомендуем вместо этого использовать команду python -m pip. Выполнение py install --refresh и добавление каталога глобальных ярлыков в PATH (если каталог не указан, это будет показано в выводе команды) должно сделать доступными такие команды, как pip, и команды других установленных пакетов.

Я установил(а) пакет с помощью pip, но его команда не найдена.

Вы активировали виртуальную среду? Запустите в терминале сценарий .venv\Scripts\activate, чтобы активировать её.

Менеджер установки Python не создаёт глобальные ярлыки для новых пакетов автоматически. Аналогично, при удалении пакетов их ярлыки не удаляются. Выполните py install --refresh, чтобы обновить глобальные ярлыки для недавно установленных пакетов.

При вводе script-name.py в терминале он открывается в новом окне.

Это известное ограничение операционной системы. Укажите py перед именем сценария, создайте пакетный файл с содержимым @py "%~dpn0.py" %* и тем же именем, что у сценария, либо установите устаревший модуль запуска и назначьте его приложением для открытия сценариев.

Не удаётся перетащить файлы на сценарий

Это известное ограничение операционной системы. Такая возможность поддерживается устаревшим модулем запуска или менеджером установки Python, если он установлен из MSI.

Я несколько раз устанавливал(а) менеджер установки Python.

Можно одновременно установить его из Store или WinGet, из MSIX на веб-сайте Python и из MSI. Все эти варианты совместимы и используют общие настройки и среды выполнения.

О способах удаления менеджера установки, помимо обычной страницы «Установленные приложения» («Установка и удаление программ»), см. ранее приведённый раздел Расширенная установка.

Старые настройки py.ini больше не работают.

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

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

Добавлено в версии 3.5.

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

Для установки встраиваемого дистрибутива рекомендуется использовать py install с параметром --target:

$> py install 3.14-embed --target=<directory>

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

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

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

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

4.2.1. Приложение на Python

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

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

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

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

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

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

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

4.3. Пакеты nuget.org

Добавлено в версии 3.5.2.

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

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

Средство командной строки nuget.exe можно скачать непосредственно с https://dist.nuget.org/win-x86-commandline/latest/nuget.exe, например с помощью 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 нельзя обновлять: новые версии следует устанавливать рядом с существующими и указывать полный путь к ним. Также можно вручную удалить каталог пакета и установить его заново. Многие системы непрерывной интеграции выполняют это автоматически, если не сохраняют файлы между сборками.

Рядом с каталогом 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. Свободнопоточные пакеты

Добавлено в версии 3.13.

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

4.4. Альтернативные дистрибутивы

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

ActivePython

Установщик с поддержкой нескольких платформ, документацией и PyWin32

Anaconda

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

Enthought Deployment Manager

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

Ранее Enthought предоставляла Canopy, но в 2016 году поддержка этой среды была прекращена.

WinPython

Дистрибутив для Windows с предварительно собранными научными пакетами и инструментами для сборки пакетов.

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

4.5. Поддерживаемые версии Windows

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

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

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

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

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

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

4.7. Режим UTF-8

Добавлено в версии 3.7.

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

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

С помощью режима UTF-8 в Python можно изменить кодировку текста по умолчанию на UTF-8. Включить режим UTF-8 в Python можно с помощью параметра командной строки -X utf8 или переменной окружения PYTHONUTF8=1. О том, как включить режим UTF-8, см. в разделе PYTHONUTF8, а о том, как изменять переменные окружения, — в разделе Диспетчер установки Python.

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

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

Примечание

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

  • ввода-вывода в консоли, включая стандартный ввод-вывод (подробности см. в PEP 528);
  • кодировки файловой системы (подробности см. в PEP 529).

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

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

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

  • В начало добавляется пустой элемент, соответствующий текущему каталогу.
  • Если существует переменная окружения PYTHONPATH, описанная в разделе Переменные окружения, её элементы добавляются следующими. Обратите внимание: в Windows пути в этой переменной должны разделяться точками с запятой, чтобы отличать их от двоеточия в обозначениях дисков (например, C:\ и т. д.).
  • Дополнительные «пути приложений» можно добавить в реестр в виде подразделов \SOFTWARE\Python\PythonCore{version}\PythonPath в разделах HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE. Подразделы, у которых значение по умолчанию представляет собой список путей, разделённых точками с запятой, приводят к добавлению каждого пути в sys.path. (Обратите внимание: все известные установщики используют только HKLM, поэтому HKCU обычно пуст.)
  • Если задана переменная окружения PYTHONHOME, её значение принимается за «домашний каталог Python». В противном случае путь к основному исполняемому файлу 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-файл с правильным именем.)

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

Изменено в версии 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.9. Дополнительные модули

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

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

4.9.1. PyWin32

Модуль PyWin32, созданный Марком Хаммондом, представляет собой набор модулей для расширенной поддержки Windows. Он включает инструменты для работы с:

  • Component Object Model (COM)
  • вызовами Win32 API
  • реестром
  • журналом событий
  • пользовательскими интерфейсами на основе Microsoft Foundation Classes (MFC)

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

См. также

Win32: как это сделать…?

автор — Тим Голден

Python и COM

авторы — Дэвид и Пол Бодди

4.9.2. cx_Freeze

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

4.10. Сборка Python в Windows

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

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

Общие сведения о процессе сборки см. в PCbuild/readme.txt.

Сведения о модулях расширения см. в разделе Сборка расширений C и C++ в Windows.

4.11. Полный установщик (устарел)

Устарело с версии 3.14: Этот установщик устарел начиная с версии 3.14 и больше не будет выпускаться для Python 3.16 и более поздних версий. Современный установщик см. в разделе Менеджер установки Python.

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

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

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

../_images/win_installer.png

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

  • Вам не потребуются права администратора (за исключением случаев, когда требуется обновление системной библиотеки C Runtime Library или установка менеджера установки Python для всех пользователей)
  • Python будет установлен в каталог вашего пользователя
  • Менеджер установки Python будет установлен в соответствии с параметром в нижней части первой страницы
  • Будут установлены стандартная библиотека, набор тестов, средство запуска и pip
  • Если этот параметр выбран, каталог установки будет добавлен в PATH
  • Ярлыки будут видны только текущему пользователю

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

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

  • Возможно, потребуется ввести учетные данные администратора или получить его разрешение
  • Python будет установлен в каталог Program Files
  • Менеджер установки Python будет установлен в каталог Windows
  • Во время установки можно выбрать дополнительные компоненты
  • Стандартную библиотеку можно предварительно скомпилировать в байт-код
  • Если этот параметр выбран, каталог установки будет добавлен в системный PATH
  • Ярлыки будут доступны всем пользователям

4.11.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.11.3. Установка без интерфейса

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

Установщику можно передать следующие параметры (их список можно получить, запустив установщик с /?):

Имя

Описание

/passive

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

/quiet

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

/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

Добавить каталоги установки и Scripts в начало PATH и добавить .PY в PATHEXT

0

AppendPath

Добавить каталоги установки и Scripts в конец PATH и добавить .PY в PATHEXT

0

Shortcuts

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

1

Include_doc

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

1

Include_debug

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

0

Include_dev

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

1

Include_exe

Установить python.exe и связанные файлы. Без них установка может оказаться непригодной для использования.

1

Include_launcher

Установить менеджер установки Python.

1

InstallLauncherAllUsers

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

1

Include_lib

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

1

Include_pip

Установить входящие в комплект pip и setuptools

1

Include_symbols

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

0

Include_tcltk

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

1

Include_test

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

1

Include_tools

Установить служебные сценарии

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.11.4. Установка без загрузки

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

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

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

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

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

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

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

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

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

4.11.6. Установка свободнопоточных двоичных файлов

Добавлено в версии 3.13.

Чтобы установить предварительно собранные двоичные файлы с включённой поддержкой свободной многопоточности (см. PEP 703), выберите «Настроить установку». На второй странице параметров есть флажок «Загрузить свободнопоточные двоичные файлы».

../_images/win_install_freethreaded.png

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

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

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

Свободнопоточные двоичные файлы также доступны на nuget.org.

4.12. Средство запуска Python для Windows (устарело)

Устарело с версии 3.14: Описанные выше диспетчер установки Python и документация к нему заменили средство запуска и эту документацию. Эта информация временно сохранена из исторического интереса.

Добавлено в версии 3.3.

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

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

Средство запуска изначально было описано в PEP 397.

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

4.12.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.12.1.2. Виртуальные окружения

Добавлено в версии 3.5.

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

4.12.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.12.1.4. Из ассоциаций файлов

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

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

4.12.2. Строки shebang

Если первая строка файла скрипта начинается с #!, она называется строкой «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. Если активно виртуальное окружение, указание версии будет проигнорировано и будет использовано это окружение.

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

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

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

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

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

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

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

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

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

#! /usr/bin/python -v

В этом случае Python будет запущен с параметром -v

4.12.4. Настройка

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

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

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

4.12.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 указанной версии, если она доступна. Благодаря этому поведение средства запуска можно предсказать, зная только установленные на компьютере версии, и не учитывая порядок их установки (то есть не зная, какая версия Python — 32- или 64-разрядная — и соответствующее средство запуска были установлены последними). Как указано выше, для изменения этого поведения к спецификатору версии можно добавить необязательный суффикс «-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 не учитывают регистр). Значение переменной среды имеет приоритет над значением, указанным в файле 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.12.5. Диагностика

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

4.12.6. Пробный запуск

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

4.12.7. Установка по запросу

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

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

4.12.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 не найден.

© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/using/windows.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API