Spec-Zone.ru › Python 3.9

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

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

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

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

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

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

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

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

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

3.1. Полный установщик

3.1.1. Шаги установки

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

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

../_images/win_installer.png

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

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

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

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

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

3.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.

3.1.3. Установка без графического интерфейса

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

Чтобы полностью скрыть графический интерфейс установщика и установить Python в бесшумном режиме, передайте параметр /quiet. Чтобы пропустить взаимодействие с пользователем, но отобразить прогресс и ошибки, передайте параметр /passive. Параметр /uninstall можно передать, чтобы немедленно начать удаление Python — запрос подтверждения не будет отображен.

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

Имя

Описание

Значение по умолчанию

InstallAllUsers

Выполнить установку для всей системы.

0

TargetDir

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

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

DefaultAllUsersTargetDir

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

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

DefaultJustForMeTargetDir

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

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

DefaultCustomTargetDir

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

(пусто)

AssociateFiles

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

1

CompileAll

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

0

PrependPath

Добавить каталоги установки и 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 для Windows.

1

InstallLauncherAllUsers

Устанавливает Загрузчик Python для Windows для всех пользователей.

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>

3.1.4. Установка без скачивания

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

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

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

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

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

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

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

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

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

3.2. Пакет Microsoft Store

Новая версия 3.7.2.

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

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

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

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

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

Все три команды также доступны с номерами версий, например, как python3.exe и python3.x.exe, а также python.exe (где 3.x — конкретная версия, которую вы хотите запустить, например, 3.9). Откройте «Управление псевдонимами запуска приложений» через меню «Пуск», чтобы выбрать, какая версия Python ассоциируется с каждой командой. Рекомендуется убедиться, что pip и idle согласуются с выбранной версией python.

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

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

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

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

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

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

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

3.3. Пакеты nuget.org

Новая версия 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 не обновляются, и новые версии следует устанавливать рядом и ссылаться на них с полным путем. В качестве альтернативы можно вручную удалить каталог пакета и установить его снова. Многие системы непрерывной интеграции автоматически выполняют это, если не сохраняют файлы между сборками.

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

Страницы информации о пакетах на nuget.org: www.nuget.org/packages/python для 64-разрядной версии и www.nuget.org/packages/pythonx86 для 32-разрядной версии.

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

Новая версия 3.5.

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

3.5. Альтернативные пакеты

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

ActivePython

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

Anaconda

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

Canopy

«Комплексная среда анализа Python» с редакторами и другими инструментами разработки.

WinPython

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

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

END_OF_DOCUMENT_MARKER

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

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

3.6.1. Вводная: Настройка переменных среды

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

Для временной настройки переменных среды откройте Командную строку и используйте команду 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.

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

Примечание

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 для постоянного изменения переменных среды

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

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

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

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

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

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

3.7. Режим UTF-8

Новое в версии 3.7.

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

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

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

Когда режим UTF-8 включен:

  • locale.getpreferredencoding() возвращает 'UTF-8' вместо системной кодировки. Эта функция используется для кодировки текста по умолчанию во многих местах, включая open(), Popen, Path.read_text(), и т.д.
  • sys.stdin, sys.stdout и sys.stderr все используют UTF-8 в качестве кодировки текста.
  • Вы по-прежнему можете использовать системную кодировку через кодек «mbcs».

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

Примечание

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

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

3.8. Загрузчик Python для Windows

Новая версия 3.3.

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

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

Загрузчик изначально был описан в PEP 397.

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

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

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

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

py

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

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

py -3.7

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

py -2

Должна начаться последняя версия Python 3.x.

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

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

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

Команда:

py --list

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

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

Новая версия 3.5.

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

3.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.9.

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

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

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

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

3.8.2. Строки shebang

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

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

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

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

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

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

#! /usr/bin/python -v

Тогда Python будет запущен с параметром -v

3.8.4. Настройка

3.8.4.1. Настройка через файлы INI

Загрузчик будет искать два файла .ini — py.ini в каталоге «данные приложений» текущего пользователя (то есть, каталоге, возвращаемом функцией Windows SHGetFolderPath с параметром CSIDL_LOCAL_APPDATA) и py.ini в той же папке, что и сам загрузчик. Те же файлы .ini используются как для «консольного» варианта загрузчика (то есть, py.exe), так и для «окносного» (то есть, pyw.exe).

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

3.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 нечувствительны к регистру). Содержимое переменной среды переопределит настройки, указанные в файле INI.

Например:

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

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

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

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

Python обычно хранит свою библиотеку (и, следовательно, папку site-packages) в каталоге установки. Таким образом, если вы установили Python в C:\Python\, то стандартная библиотека будет располагаться в C:\Python\Lib\, а модули сторонних разработчиков — в C:\Python\Lib\site-packages\.

Для полного переопределения sys.path, создайте файл с тем же именем, что и DLL (python37._pth) или исполняемого файла (python._pth) и укажите в нём по одной строке для каждого пути, который нужно добавить в sys.path. Файл, основанный на имени DLL, переопределяет файл, основанный на имени исполняемого файла, что позволяет ограничивать пути для любого приложения, загружающего среду выполнения, при необходимости.

Когда такой файл существует, все переменные реестра и среды игнорируются, режим изоляции включён, и site не импортируется, если в файле не указана строка с import site. Пустые пути и строки, начинающиеся с #, игнорируются. Каждый путь может быть абсолютным или относительным к расположению файла. Другие операторы импорта, кроме импорта в site, запрещены, и произвольный код не может быть указан.

Обратите внимание, что файлы .pth (без ведущего нижнего подчёркивания) будут обрабатываться модулем site в обычном режиме, когда import site указан.

Если файл ._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 в свой собственный исполняемый файл, явно вызовите Py_SetPath() или (по крайней мере) Py_SetProgramName() до Py_Initialize().
  • Очистите и/или перезапишите PYTHONPATH и установите PYTHONHOME перед запуском python.exe из вашего приложения.
  • Если вы не можете использовать предыдущие рекомендации (например, вы являетесь дистрибутивом, который позволяет пользователям запускать python.exe напрямую), убедитесь, что маркировочный файл (Lib\os.py ) существует в каталоге вашей установки. (Обратите внимание, что он не будет обнаружен внутри файла ZIP, но правильно именованный файл ZIP будет обнаружен.)

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

Изменено в версии 3.6:
  • Добавлена поддержка файлов ._pth и удалён параметр applocal из pyvenv.cfg.
  • Добавлен pythonXX.zip как потенциальный маркировочный файл, когда он расположен непосредственно рядом с исполняемым файлом.
Устарело начиная с версии 3.6:

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

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

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

Документация по специфичным для Windows стандартным модулям представлена в Услуги, специфичные для MS Windows.

3.10.1. PyWin32

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

  • Компоненты объекта модели (COM)
  • Вызовов Win32 API
  • Реестра
  • Журнала событий
  • Microsoft Foundation Classes (MFC) пользовательские интерфейсы

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

См. также

Win32 Как сделать…?

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

Python и COM

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

3.10.2. cx_Freeze

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

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

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

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

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

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

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

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

  • Windows CE больше не поддерживается с Python 3 (если он когда-либо поддерживался).
  • Инсталлятор Cygwin также предлагает установить интерпретатор Python.

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

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

Spec-Zone.ru

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