Использование Python в Windows
В данном документе представлен обзор особенностей поведения Python в операционной системе Microsoft Windows.
В отличие от большинства Unix-систем и служб, Windows не содержит системной поддержки установки Python. Для обеспечения доступности Python команда CPython много лет собирает установочные пакеты Windows (пакеты MSI) для каждой версии. Эти установщики в основном предназначены для добавления установки Python для каждого пользователя, при этом ядро интерпретатора и библиотеки используются только одним пользователем. Установщик также может установить Python для всех пользователей одного компьютера, а также доступен отдельный ZIP-архив для локальных распределений приложений.
Как указано в PEP 11, релиз Python поддерживает платформу Windows только при условии, что Microsoft считает эту платформу под дальнейшей поддержкой. Это означает, что Python 3.8 поддерживает Windows Vista и более поздние версии. Если вам нужна поддержка Windows XP, то пожалуйста установите Python 3.4.
Для Windows доступно несколько различных установщиков, каждый со своими преимуществами и недостатками.
Полный установщик содержит все компоненты и является лучшим вариантом для разработчиков, использующих Python для любых проектов.
Пакет из Microsoft Store представляет собой простую установку Python, подходящую для запуска скриптов и пакетов, а также использования IDLE или других сред разработки. Он требует Windows 10, но может быть безопасно установлен без повреждения других программ. Он также предоставляет множество удобных команд для запуска Python и его инструментов.
Пакеты nuget.org – это лёгкие установки, предназначенные для систем непрерывной интеграции. Их можно использовать для создания пакетов Python или запуска скриптов, но они не обновляются и не имеют инструментов пользовательского интерфейса.
Встраиваемый пакет – это минимальный пакет Python, подходящий для встраивания в более крупное приложение.
3.1. Полный установщик
3.1.1. Шаги установки
Доступны четыре установщика Python 3.8 для скачивания — по два для 32-битной и 64-битной версий интерпретатора. Веб-установщик — это небольшой начальный запрос, и он автоматически загрузит необходимые компоненты по мере необходимости. Установка автономным установщиком включает компоненты, необходимые для стандартной установки, и требует подключения к Интернету только для дополнительных функций. См. Установка без скачивания для других способов избежать скачивания во время установки.
После запуска установщика можно выбрать один из двух вариантов:
Если вы выберете «Установить сейчас»:
- Вам не потребуется статус администратора (если не требуется обновление системы для библиотеки 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 | Каталог установки по умолчанию для установок для всех пользователей |
|
DefaultJustForMeTargetDir | Каталог установки по умолчанию для установок только для меня |
|
DefaultCustomTargetDir | Каталог установки по умолчанию для пользовательской установки, отображаемый в графическом интерфейсе | (пусто) |
AssociateFiles | Создать ассоциации файлов, если установлены также и загрузчик. | 1 |
CompileAll | Компилировать все | 0 |
PrependPath | Добавить каталоги установки и Scripts в | 0 |
Shortcuts | Создать ярлыки для интерпретатора, документации и IDLE, если установлены. | 1 |
Include_doc | Установить руководство по Python | 1 |
Include_debug | Установить бинарные файлы отладки | 0 |
Include_dev | Установить заголовки и библиотеки разработчика | 1 |
Include_exe | Установить | 1 |
Include_launcher | Установить Загрузчик Python для Windows. | 1 |
InstallLauncherAllUsers | Устанавливает Загрузчик Python для Windows для всех пользователей. | 1 |
Include_lib | Установить стандартную библиотеку и модули расширений | 1 |
Include_pip | Установить интегрированные pip и setuptools | 1 |
Include_symbols | Установить символы отладки ( | 0 |
Include_tcltk | Установить поддержку Tcl/Tk и IDLE | 1 |
Include_test | Установить набор тестов стандартной библиотеки | 1 |
Include_tools | Установить утилитарные скрипты | 1 |
LauncherOnly | Устанавливает только загрузчик. Это переопределит большинство других параметров. | 0 |
SimpleInstall | Отключить большинство графических элементов управления установкой | 0 |
SimpleInstallDescription | Пользовательское сообщение для отображения при использовании упрощенного графического интерфейса установки. | (пусто) |
Например, для бесшумной установки стандартной установки Python для всей системы можно использовать следующую команду (из командной строки с правами администратора):
python-3.8.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0
Для того, чтобы пользователи могли легко установить личную копию Python без набора тестов, можно предоставить ярлык со следующей командой. Это отобразит упрощенную начальную страницу и запретит настройку:
python-3.8.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.8.0.exe на фактическое имя вашего установщика и создать структуры в своих собственных каталогах, чтобы избежать столкновений между файлами с одинаковыми именами.
python-3.8.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.8». Убедитесь, что приложение опубликовано Python Software Foundation, и установите его.
Предупреждение
Python всегда доступен бесплатно в Microsoft Store. Если вам предлагается заплатить за него, вы выбрали не тот пакет.
После установки Python можно запустить, найдя его в меню «Пуск». Кроме того, он будет доступен из любой сессии командной строки или PowerShell, набрав python. Кроме того, pip и IDLE можно запустить, набрав pip или idle. IDLE также можно найти в меню «Пуск».
Все три команды также доступны с номерами версии, например, как python3.exe и python3.x.exe, а также python.exe (где 3.x — конкретная версия, которую вы хотите запустить, например, 3.8). Откройте «Управление псевдонимами запуска приложений» через меню «Пуск», чтобы выбрать, какая версия 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 и реестр. Вместо этого они будут записывать в свою приватную копию. Если скрипты должны изменять общие места, вам необходимо установить полный установщик.
Для более подробной информации о техническом обосновании этих ограничений, пожалуйста, обратитесь к документации Майкрософт по пакетированным приложениям с полными правами, которая в настоящее время доступна по адресу docs.microsoft.com/en-us/windows/msix/desktop/desktop-to-uwp-behind-the-scenes
3.3. Пакеты nuget.org
Новая версия 3.5.2.
Пакет nuget.org — это Python-среда с уменьшенным размером, предназначенная для использования в системах непрерывной интеграции и сборки, у которых нет системной установки Python.
Посетите 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 в системном каталоге.
Примечание
При запуске на Windows 7 для Python 3.8 требуется установка обновления KB2533623. Встраиваемое распределение не обнаруживает это обновление и может выйти из строя при запуске. Более поздние версии Windows включают это обновление.
Пакеты сторонних разработчиков должны быть установлены установщиком приложения вместе с встраиваемым распределением. Использование pip для управления зависимостями, как в случае с обычной установкой Python, не поддерживается с этим распределением, хотя с некоторыми усилиями можно включить и использовать pip для автоматических обновлений. В целом, пакеты сторонних разработчиков следует рассматривать как часть приложения («vendor»), чтобы разработчик мог гарантировать совместимость с более новыми версиями перед предоставлением обновлений пользователям.
Два рекомендуемых варианта использования этого распределения описаны ниже.
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.
3.6. Настройка Python
Для удобного запуска Python из командной строки вы можете изменить некоторые переменные среды по умолчанию в Windows. Хотя установщик предоставляет возможность настроить переменные PATH и PATHEXT за вас, это надежно только для одной, системной установки. Если вы регулярно используете несколько версий Python, рассмотрите использование Загрузчика Python для Windows.
3.6.1. Добавление переменных среды
Windows позволяет настраивать переменные среды постоянно на уровне Пользователя и Системы, или временно в командной строке.
Для временного задания переменных среды откройте командную строку и используйте команду set:
C:\>set PATH=C:\Program Files\Python 3.8;%PATH% C:\>set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib C:\>python
Эти изменения применятся ко всем последующим командам, выполняемым в этой консоли, и будут унаследованы любыми приложениями, запущенными из консоли.
Включение имени переменной в проценты позволит расширить существующее значение, что позволит добавить новое значение в начало или конец. Изменение PATH путем добавления каталога, содержащего python.exe, в начало — распространенный способ обеспечения запуска нужной версии Python.
Чтобы постоянно изменить переменные среды по умолчанию, нажмите Пуск и найдите «изменить переменные среды», или откройте свойства системы, Дополнительные параметры системы и нажмите кнопку Переменные среды. В этом диалоговом окне вы можете добавить или изменить переменные Пользователя и Системы. Для изменения системных переменных требуется не ограниченный доступ к вашему компьютеру (т. е. права администратора).
Примечание
Windows объединяет переменные Пользователя после системных переменных, что может привести к непредвиденным результатам при изменении PATH.
Переменная PYTHONPATH используется всеми версиями Python 2 и Python 3, поэтому вы не должны постоянно настраивать эту переменную, если она содержит только код, совместимый со всеми установленными версиями Python.
См. также
- https://www.microsoft.com/ru-ru/wdsi/help/folder-variables
-
Переменные среды в Windows NT
- https://technet.microsoft.com/ru-ru/library/cc754250.aspx
-
Команда SET для временного изменения переменных среды
- https://technet.microsoft.com/ru-ru/library/cc755104.aspx
-
Команда SETX для постоянного изменения переменных среды
- https://support.microsoft.com/ru-ru/help/310519/how-to-manage-environment-variables-in-windows-xp
-
Как управлять переменными среды в Windows XP
- https://www.chem.gla.ac.uk/~louis/software/faq/q1.html
-
Установка переменных среды, Louis J. Farrugia
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.8
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.
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 (например, 2.7 и 3.8), вы заметите, что запущен Python 3.8 — чтобы запустить Python 2.7, попробуйте команду:
py -2.7
Если вам нужна последняя версия установленного Python 2.x, попробуйте команду:
py -2
Вы должны увидеть, что запущена последняя версия Python 2.x.
Если вы видите следующую ошибку, загрузчик не установлен:
'py' is not recognized as an internal or external command, operable program or batch file.
Пользовательские установки Python не добавляют загрузчик в PATH, если этот параметр не был выбран при установке.
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 2.6, попробуйте изменить первую строку на #! python2.6 и вы должны увидеть информацию о версии 2.6.
Обратите внимание, что в отличие от интерактивного использования, простой «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/pythonpython
Например, если первая строка вашего скрипта начинается с
#! /usr/bin/python
Будет найден и использован стандартный Python. Поскольку многие скрипты Python, написанные для работы в Unix, уже содержат эту строку, вы должны обнаружить, что эти скрипты могут использоваться загрузчиком без изменений. Если вы пишете новый скрипт для Windows, который, возможно, будет полезен в Unix, вы должны использовать одну из строк shebang, начинающихся с /usr.
Любую из вышеуказанных виртуальных команд можно дополнить явной версией (только основной версии или основной и дополнительной версии). Кроме того, можно запросить 32-битную версию, добавив «-32» после дополнительной версии. Например, /usr/bin/python2.7-32 запросит использование 32-битного python 2.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.1иpython2.7вообще не будут использовать какие-либо параметры, так как версии полностью указаны. - Если
PY_PYTHON=3, командыpythonиpython3обе будут использовать последнюю установленную версию Python 3. - Если
PY_PYTHON=3.1-32, командаpythonбудет использовать 32-разрядную реализацию 3.1, а командаpython3будет использовать последнюю установленную версию Python (PY_PYTHON вообще не учитывалась, так как была указана основная версия). - Если
PY_PYTHON=3иPY_PYTHON3=3.1, командыpythonиpython3обе будут использовать конкретно 3.1
Помимо переменных среды, те же настройки можно настроить в файле .INI, используемом загрузчиком. Раздел в файле INI называется [defaults], а имя ключа будет таким же, как у переменных среды, без префикса PY_ (обратите внимание, что имена ключей в файле INI не чувствительны к регистру). Содержимое переменной среды будет переопределять значения, указанные в файле INI.
Например:
- Установка
PY_PYTHON=3.1эквивалентна наличию в файле INI:
[defaults] python=3.1
- Установка
PY_PYTHON=3иPY_PYTHON3=3.1эквивалентна наличию в файле INI:
[defaults] python=3 python3=3.1
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, создайте файл ._pth с тем же именем, что и 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 будет обнаружен вместо этого.)
Это гарантирует, что файлы в системе-wide установке не будут иметь приоритет над копией стандартной библиотеки, включённой в ваше приложение. В противном случае у пользователей могут возникнуть проблемы при использовании вашего приложения. Обратите внимание, что первое предложение является лучшим, поскольку другие могут всё ещё быть подвержены нестандартным путям в реестре и пользовательских site-packages.
- Добавлена поддержка файлов
._pthи удалена опцияapplocalизpyvenv.cfg. - Добавлен
pythonXX.zipв качестве потенциальной метки при непосредственном расположении рядом с исполняемым файлом.
Модули, указанные в реестре в 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 How Do I…?
-
от Тима Голдена
- Python и COM
-
от Дэвида и Пола Бодди
3.10.2. cx_Freeze
cx_Freeze — это расширение distutils (см. Расширение Distutils), которое упаковывает скрипты Python в исполняемые приложения Windows (*.exe файлы). После этого вы можете распространять своё приложение, не требуя от пользователей установку Python.
3.10.3. WConio
Поскольку расширенный уровень обработки терминала Python, curses, ограничен системами типа Unix, существует также библиотека, эксклюзивная для Windows: Windows Console I/O для Python.
WConio — это обёртка для CONIO.H Turbo-C, используемая для создания текстовых пользовательских интерфейсов.
3.11. Компиляция Python на Windows
Если вы хотите скомпилировать CPython самостоятельно, первым делом вам нужно получить исходный код. Вы можете загрузить исходный код последней версии или просто сделать выгрузку.
Дерево исходного кода содержит решение для сборки и файлы проекта для Microsoft Visual Studio 2015, который является компилятором, используемым для построения официальных релизов Python. Эти файлы находятся в каталоге PCbuild.
Дополнительную информацию о процессе сборки можно найти в PCbuild/readme.txt.
Для модулей расширений см. Компиляция C и C++ расширений на Windows.
См. также
- Python + Windows + distutils + SWIG + gcc MinGW
-
или «Создание расширений Python на C/C++ с помощью SWIG и их компиляция с помощью MinGW gcc под Windows» или «Установка расширения Python с помощью distutils и без Microsoft Visual C++» от Себастьана Соважа, 2003
3.12. Другие платформы
В ходе развития Python некоторые платформы, которые ранее поддерживались, больше не поддерживаются (из-за отсутствия пользователей или разработчиков). Подробности обо всех неподдерживаемых платформах см. в PEP 11.
- Windows CE по-прежнему поддерживается.
- Установщик Cygwin предлагает установить интерпретатор Python (см. исходный код пакета Cygwin, релизы от разработчика)
Подробную информацию о платформах с предварительно скомпилированными установщиками см. на странице Python для Windows.
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/using/windows.html