Содержание страницы
3. Использование Python в Windows¶Using Python on Windows
Этот документ содержит обзор особенностей поведения Windows, которые следует учитывать при использовании Python в Microsoft Windows.
В отличие от большинства систем и служб Unix, Windows не включает в себя официально поддерживаемую установку Python. Чтобы сделать Python доступным, команда CPython на протяжении многих лет компилирует установщики Windows (пакеты MSI) для каждого релиза. Эти установщики в первую очередь предназначены для добавления установки Python для одного пользователя, с основным интерпретатором и библиотекой, используемыми одним пользователем. Установщик также может выполнить установку для всех пользователей одной машины, а отдельный ZIP-файл доступен для локального распространения приложений.
Как указано в PEP 11, выпуск Python поддерживает только те платформы Windows, которые Microsoft считает находящимися в расширенной поддержке. Это означает, что Python 3.7 поддерживает Windows Vista и новее. Если вам требуется поддержка Windows XP, установите Python 3.4.
Для Windows доступно несколько различных установщиков, каждый со своими преимуществами и недостатками.
Полный установщик содержит все компоненты и является лучшим выбором для разработчиков, использующих Python для любого типа проектов.
Пакет Microsoft Store – это простая установка Python, подходящая для запуска скриптов и пакетов, а также для использования IDLE и других сред разработки. Он требует Windows 10, но его можно безопасно установить без повреждения других программ. Он также предоставляет множество удобных команд для запуска Python и его инструментов.
Пакеты nuget.org – это облегчённые установки, предназначенные для систем непрерывной интеграции. Их можно использовать для сборки пакетов Python или запуска скриптов, но они не обновляются и не имеют средств пользовательского интерфейса.
Встраиваемый пакет – это минимальный пакет Python, подходящий для встраивания в более крупное приложение.
3.1. Полный установщик¶The full installer
3.1.1. Шаги установки¶Installation steps
Для загрузки доступны четыре установщика Python 3.7 – по два для 32-разрядной и 64-разрядной версий интерпретатора. Веб-установщик – это небольшой первоначальный загрузчик, который при необходимости автоматически загружает требуемые компоненты. Автономный установщик включает компоненты, необходимые для стандартной установки, и требует подключения к интернету только для дополнительных возможностей. Другие способы избежать загрузки во время установки см. в Установка без загрузки.
После запуска установщика можно выбрать один из двух вариантов:
Если вы выберете «Установить сейчас»:
Вам не потребуются права администратора (если только не требуется системное обновление библиотеки времени выполнения C или вы не устанавливаете Запускатель Python для Windows для всех пользователей).
Python будет установлен в ваш пользовательский каталог
Запускатель Python для Windows будет установлен в соответствии с опцией в нижней части первой страницы.
Стандартная библиотека, тестовый набор, средство запуска и pip будут установлены
Если выбрано, каталог установки будет добавлен в ваши
PATHЯрлыки будут видны только текущему пользователю
Выбор «Настраиваемая установка» позволит выбрать компоненты для установки, расположение установки и другие параметры или действия после установки. Чтобы установить отладочные символы или двоичные файлы, нужно использовать этот вариант.
Для установки для всех пользователей следует выбрать «Настраиваемая установка». В этом случае:
Может потребоваться предоставить учетные данные администратора или одобрение
Python будет установлен в каталог Program Files
Запускатель Python для Windows будет установлен в каталог Windows.
Дополнительные компоненты можно выбрать во время установки
Стандартная библиотека может быть предварительно скомпилирована в байт-код
Если выбрано, каталог установки будет добавлен в системные
PATHЯрлыки доступны для всех пользователей
3.1.2. Удаление ограничения MAX_PATH¶Removing the MAX_PATH Limitation
Исторически сложилось так, что в Windows длина пути была ограничена 260 символами. Это означало, что пути длиннее этого значения не распознавались и приводили к ошибкам.
В последних версиях Windows это ограничение можно увеличить примерно до 32 000 символов. Администратору необходимо активировать групповую политику «Включить длинные пути Win32» или установить значение реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem@LongPathsEnabled равным 1.
Это позволяет функции open(), модулю os и большинству других функций работы с путями принимать и возвращать пути длиннее 260 символов.
После изменения указанного параметра никаких дополнительных настроек не требуется.
Изменено в версии 3.6: В Python добавлена поддержка длинных путей.
3.1.3. Установка без интерфейса¶Installing Without UI
Все параметры, доступные в графическом интерфейсе установщика, также можно указать из командной строки, что позволяет сценариям установки воспроизводить установку на многих компьютерах без участия пользователя. Эти параметры также можно задать, не отключая интерфейс, чтобы изменить некоторые значения по умолчанию.
Чтобы полностью скрыть интерфейс установщика и установить Python в тихом режиме, укажите параметр
/quiet. Чтобы пропустить взаимодействие с пользователем, но при этом отображать
ход выполнения и ошибки, укажите параметр /passive. Параметр /uninstall
можно указать для немедленного начала удаления Python – приглашение отображаться не будет.
Все остальные параметры передаются в виде name=value, где значение обычно 0 для отключения функции, 1 для включения функции или путь. Полный список доступных параметров приведён ниже.
Имя |
Описание |
По умолчанию |
|---|---|---|
InstallAllUsers |
Выполняет установку для всех пользователей системы. |
0 |
TargetDir |
Каталог установки |
Выбирается на основе InstallAllUsers |
DefaultAllUsersTargetDir |
Каталог установки по умолчанию для установки для всех пользователей |
|
DefaultJustForMeTargetDir |
Каталог установки по умолчанию для установки только для текущего пользователя |
|
DefaultCustomTargetDir |
Каталог пользовательской установки по умолчанию, отображаемый в интерфейсе |
(пусто) |
AssociateFiles |
Создавать ассоциации файлов, если также установлен загрузчик. |
1 |
CompileAll |
Компилировать все файлы |
0 |
PrependPath |
Добавить каталоги install и Scripts
в |
0 |
Ярлыки |
Создавать ярлыки для интерпретатора, документации и 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 |
Установить символы отладки (*.pdb) |
0 |
Include_tcltk |
Установить поддержку Tcl/Tk и IDLE |
1 |
Include_test |
Установить набор тестов стандартной библиотеки |
1 |
Include_tools |
Установить служебные скрипты |
1 |
LauncherOnly |
Устанавливает только лаунчер. Это переопределит большинство других параметров. |
0 |
SimpleInstall |
Отключить большую часть интерфейса установки |
0 |
SimpleInstallDescription |
Пользовательское сообщение, которое отображается при использовании упрощённого интерфейса установки. |
(пусто) |
Например, для автоматической установки Python по умолчанию в общесистемном режиме можно использовать следующую команду (из командной строки с правами администратора):
python-3.7.0.exe /quiet InstallAllUsers=1 PrependPath=1 Include_test=0
Чтобы пользователи могли легко установить личную копию Python без набора тестов, можно предоставить ярлык со следующей командой. Она отобразит упрощённую начальную страницу и запретит настройку:
python-3.7.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. Установка без загрузки¶Installing Without Downloading
Поскольку некоторые возможности Python не входят в начальный загружаемый установщик, для выбора этих возможностей может потребоваться подключение к интернету. Чтобы избежать этого, все возможные компоненты можно загрузить по требованию, создав полную сборку, которая больше не будет требовать подключения к интернету независимо от выбранных возможностей. Обратите внимание, что такая загрузка может быть больше необходимой, но при большом количестве установок очень полезно иметь локально кэшированную копию.
Выполните следующую команду в командной строке, чтобы загрузить все возможные
необходимые файлы. Не забудьте заменить python-3.7.0.exe на фактическое
имя вашего установщика и создавать сборки в отдельных каталогах, чтобы
избежать конфликтов между файлами с одинаковыми именами.
python-3.7.0.exe /layout [optional target directory]
Также можно указать параметр /quiet, чтобы скрыть индикатор выполнения.
3.1.5. Изменение установки¶Modifying an install
После установки Python можно добавлять или удалять компоненты через средство «Программы и компоненты», входящее в состав Windows. Выберите запись Python и выберите «Удаление/Изменение», чтобы открыть установщик в режиме обслуживания.
«Изменить» позволяет добавлять или удалять компоненты, изменяя флажки – неизменённые флажки ничего не устанавливают и не удаляют. Некоторые параметры нельзя изменить в этом режиме, например, каталог установки; чтобы изменить их, потребуется полностью удалить и затем переустановить Python.
«Восстановить» проверяет все файлы, которые должны быть установлены в соответствии с текущими настройками, и заменяет те, которые были удалены или изменены.
«Удаление» полностью удалит Python, за исключением средства запуска Python для Windows, которое имеет собственную запись в разделе «Программы и компоненты».
3.2. Пакет Microsoft Store¶The Microsoft Store package
Добавлено в версии 3.7.2.
Примечание
Пакет из Microsoft Store в настоящее время считается нестабильным, пока оценивается его взаимодействие с другими инструментами и копиями Python. Хотя сам Python стабилен, этот способ установки может изменить своё поведение и возможности в версиях Python 3.7.
Пакет из Microsoft Store представляет собой легко устанавливаемый интерпретатор Python, предназначенный в основном для интерактивного использования, например, студентами.
Чтобы установить пакет, убедитесь, что у вас установлены последние обновления Windows 10, и найдите в приложении Microsoft Store «Python 3.7». Убедитесь, что выбранное приложение опубликовано Python Software Foundation, и установите его.
Предупреждение
Python всегда доступен бесплатно в Microsoft Store. Если за него запрашивают оплату, выбран неверный пакет.
После установки Python можно запустить, найдя его в меню «Пуск». Кроме того, он будет доступен из любого сеанса командной строки или PowerShell по команде python. Также pip и IDLE можно использовать, набрав pip или idle. IDLE также можно найти в меню «Пуск».
Все три команды также доступны с суффиксами номеров версий, например, python3.exe и python3.x.exe, а также python.exe (где 3.x – конкретная версия, которую требуется запустить, например 3.7).
Виртуальные окружения можно создать с помощью python -m venv, а затем активировать и использовать обычным образом.
Если была установлена другая версия Python и добавлена в переменную PATH, она будет доступна как python.exe, а не из Microsoft Store. Для доступа к новой установке используйте python3.exe или python3.x.exe.
Чтобы удалить Python, откройте «Параметры» и используйте раздел «Приложения и возможности» или найдите Python в меню «Пуск» и выберите «Удалить» в контекстном меню. Удаление удалит все пакеты, установленные непосредственно в эту установку Python, но не затронет виртуальные окружения.
3.2.1. Известные проблемы¶Known Issues
В настоящее время программа запуска py.exe не может использоваться для запуска Python, если он установлен из Microsoft Store.
Из-за ограничений приложений Microsoft Store скрипты Python могут не иметь полного доступа на запись к общим расположениям, таким как TEMP и реестр. Вместо этого запись будет выполняться в личную копию. Если вашим скриптам необходимо изменять общие расположения, потребуется установить полный установщик.
3.3. Пакеты nuget.org¶The nuget.org packages
Новое в версии 3.5.2.
Пакет nuget.org представляет собой среду Python уменьшенного размера, предназначенную для использования в системах непрерывной интеграции и сборки, в которых нет общесистемной установки Python. Хотя nuget является «менеджером пакетов для .NET», он также отлично работает для пакетов, содержащих инструменты времени сборки.
Посетите nuget.org для получения самой актуальной информации об использовании nuget. Ниже приведена сводка, достаточная для разработчиков Python.
Инструмент командной строки nuget.exe можно загрузить непосредственно из https://aka.ms/nugetclidl, например, с помощью curl или PowerShell. С помощью этого инструмента последняя версия Python для 64-разрядных или 32-разрядных машин устанавливается с помощью:
nuget.exe install python -ExcludeVersion -OutputDirectory .
nuget.exe install pythonx86 -ExcludeVersion -OutputDirectory .
Чтобы выбрать конкретную версию, добавьте -Version 3.x.y. Выходной каталог можно изменить с ., и пакет будет установлен в подкаталог. По умолчанию подкаталог называется так же, как пакет, и без параметра -ExcludeVersion это имя будет включать установленную конкретную версию. Внутри подкаталога находится каталог tools, содержащий установку Python:
# Without -ExcludeVersion
> .\python.3.5.2\tools\python.exe -V
Python 3.5.2
# With -ExcludeVersion
> .\python\tools\python.exe -V
Python 3.5.2
В общем случае пакеты nuget не обновляются, и новые версии должны устанавливаться параллельно и ссылаться на них по полному пути. В качестве альтернативы можно вручную удалить каталог пакета и установить его снова. Многие системы CI делают это автоматически, если они не сохраняют файлы между сборками.
Рядом с каталогом tools находится каталог build\native. Он содержит файл свойств MSBuild python.props, который можно использовать в проекте C++ для ссылки на установку Python. Включение этих параметров автоматически приведет к использованию заголовочных файлов и библиотек импорта в вашей сборке.
Страницы с информацией о пакетах на nuget.org: www.nuget.org/packages/python для 64-разрядной версии и www.nuget.org/packages/pythonx86 для 32-разрядной версии.
3.4. Встраиваемый пакет¶The embeddable package
Новое в версии 3.5.
Встраиваемое распространение представляет собой ZIP-файл, содержащий минимальное окружение Python. Оно предназначено для использования в качестве части другого приложения, а не для прямого доступа конечных пользователей.
При распаковке встраиваемая дистрибуция (почти) полностью изолирована от системы пользователя, включая переменные окружения, настройки системного реестра и установленные пакеты. Стандартная библиотека включена в виде предварительно скомпилированных и оптимизированных файлов .pyc в ZIP, а также предоставляются python3.dll, python37.dll, python.exe и pythonw.exe. Tcl/tk (включая все зависимые компоненты, такие как Idle), pip и документация Python не включены.
Примечание
Встроенное распространяемое не включает Microsoft C Runtime, и установщик приложения должен предоставить его. Среда выполнения могла быть уже установлена в системе пользователя ранее или автоматически через Центр обновления Windows; её можно обнаружить, найдя ucrtbase.dll в системном каталоге.
Сторонние пакеты должны устанавливаться установщиком приложения вместе со встраиваемым распространением. Использование pip для управления зависимостями, как в обычной установке Python, не поддерживается в этом распространении, хотя при определенной осторожности может быть возможно включить и использовать pip для автоматических обновлений. В общем случае сторонние пакеты следует рассматривать как часть приложения («вендоринг»), чтобы разработчик мог обеспечить совместимость с новыми версиями перед предоставлением обновлений пользователям.
Два рекомендуемых варианта использования этого распространения описаны ниже.
3.4.1. Приложение Python¶Python Application
Приложение, написанное на Python, не обязательно требует, чтобы пользователи знали об этом факте. В этом случае встраиваемое распространение может быть использовано для включения частной версии Python в установочный пакет. В зависимости от того, насколько прозрачным оно должно быть (или, наоборот, насколько профессиональным оно должно выглядеть), есть два варианта.
Использование специализированного исполняемого файла в качестве загрузчика требует некоторого программирования, но обеспечивает наиболее прозрачный интерфейс для пользователей. При использовании настраиваемого загрузчика нет явных признаков того, что программа работает на Python: значки можно настраивать, можно указать информацию о компании и версии, а ассоциации файлов работают правильно. В большинстве случаев настраиваемый загрузчик должен просто вызывать Py_Main с жестко заданной командной строкой.
Более простой подход – предоставить пакетный файл или созданный ярлык, который напрямую вызывает python.exe или pythonw.exe с необходимыми аргументами командной строки. В этом случае приложение будет отображаться как Python, а не под своим реальным именем, и у пользователей могут возникнуть трудности с его отличием от других запущенных процессов Python или ассоциаций файлов.
При втором подходе пакеты должны быть установлены как каталоги рядом с исполняемым файлом Python, чтобы гарантировать их доступность в пути. При использовании специализированного загрузчика пакеты могут располагаться в других местах, так как есть возможность указать путь поиска перед запуском приложения.
3.4.2. Встраивание Python¶Embedding Python
Приложения, написанные на нативном коде, часто требуют какую-либо форму языка сценариев, и для этой цели может быть использовано встраиваемое распространение Python. В общем случае большая часть приложения написана на нативном коде, и некоторая часть будет либо вызывать python.exe, либо напрямую использовать python3.dll. В любом случае, извлечение встраиваемого распространения в подкаталог установки приложения достаточно для обеспечения загружаемого интерпретатора Python.
Как и при использовании в приложении, пакеты можно устанавливать в любое место, так как есть возможность указать пути поиска перед инициализацией интерпретатора. В остальном нет принципиальных различий между использованием встраиваемого распространения и обычной установкой.
3.5. Альтернативные сборки¶Alternative bundles
Помимо стандартного дистрибутива CPython, существуют модифицированные пакеты, включающие дополнительную функциональность. Ниже приведён список популярных версий и их ключевые особенности:
- ActivePython
Установщик с поддержкой нескольких платформ, документация, PyWin32
- Anaconda
Популярные научные модули (такие как numpy, scipy и pandas) и менеджер пакетов
conda.- Canopy
«Комплексная среда анализа Python» с редакторами и другими средствами разработки.
- WinPython
Дистрибутив для Windows с предварительно собранными научными пакетами и инструментами для сборки пакетов.
Обратите внимание, что эти пакеты могут не включать последние версии Python или других библиотек и не поддерживаются командой ядра Python.
3.6. Настройка Python¶Configuring Python
Для удобного запуска Python из командной строки можно рассмотреть изменение некоторых переменных окружения по умолчанию в Windows. Хотя установщик предоставляет возможность настроить переменные PATH и PATHEXT, это надёжно только для одной общесистемной установки. Если вы регулярно используете несколько версий Python, рассмотрите возможность использования Python Launcher for Windows.
3.6.1. Отступление: установка переменных окружения¶Excursus: Setting environment variables
Windows позволяет настраивать переменные окружения постоянно как на уровне пользователя, так и на уровне системы, или временно в командной строке.
Чтобы временно задать переменные окружения, откройте командную строку и используйте команду set:
C:\>set PATH=C:\Program Files\Python 3.7;%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/en-us/wdsi/help/folder-variables
Переменные среды в Windows NT
- https://technet.microsoft.com/en-us/library/cc754250.aspx
Команда SET для временного изменения переменных среды
- https://technet.microsoft.com/en-us/library/cc755104.aspx
Команда SETX для постоянного изменения переменных среды
- https://support.microsoft.com/en-us/help/310519/how-to-manage-environment-variables-in-windows-xp
Как управлять переменными среды в Windows XP
- https://www.chem.gla.ac.uk/~louis/software/faq/q1.html
Настройка переменных среды, Луи Дж. Фарруджа
3.6.2. Поиск исполняемого файла Python¶Finding the Python executable
Изменено в версии 3.5.
Помимо использования автоматически созданного пункта меню «Пуск» для интерпретатора Python, вы можете запускать Python из командной строки. В установщике есть опция, которая настроит это для вас.
На первой странице установщика можно выбрать опцию «Add Python to PATH»,
чтобы установщик добавил путь установки в переменную
PATH. Также добавляется расположение папки Scripts\.
Это позволяет вводить python для запуска интерпретатора и
pip для работы с пакетным менеджером. Таким образом, вы также можете выполнять свои
скрипты с параметрами командной строки – см. документацию Command line.
Если вы не включили эту опцию при установке, вы всегда можете повторно запустить
установщик, выбрать «Modify» и включить её. Или же вы можете вручную
изменить переменные PATH, следуя инструкциям в разделе Excursus: Setting environment variables. Вам
нужно добавить каталог вашей установки Python в переменную среды
PATH, разделив его точкой с запятой от других записей. Пример
переменной может выглядеть так (предполагая, что первые две записи уже
существовали):
C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Python 3.7
3.7. Режим UTF-8¶UTF-8 mode
Добавлено в версии 3.7.
Windows по-прежнему использует устаревшие кодировки для системной кодировки (кодовую страницу ANSI). Python использует её для кодировки по умолчанию текстовых файлов (например, locale.getpreferredencoding()).
Это может вызывать проблемы, поскольку UTF-8 широко используется в интернете и большинстве Unix-систем, включая WSL (подсистема Windows для Linux).
Режим UTF-8 позволяет изменить стандартную текстовую кодировку на UTF-8. Включить режим UTF-8 можно с помощью параметра командной строки -X utf8 или переменной окружения PYTHONUTF8=1. О включении режима UTF-8 см. PYTHONUTF8, а о том, как изменять переменные окружения, см. Отступление: задание переменных окружения.
Если режим 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¶Python Launcher for Windows
Новое в версии 3.3.
Загрузчик Python для Windows – это утилита, помогающая находить и запускать различные версии Python. Она позволяет сценариям (или командной строке) указать предпочтительную версию Python, и загрузчик найдет и запустит эту версию.
В отличие от переменной PATH, загрузчик правильно выбирает наиболее подходящую версию Python. Он отдает предпочтение установкам для конкретного пользователя перед общесистемными и сортирует по версии языка, а не по дате установки.
Загрузчик был первоначально описан в PEP 397.
3.8.1. Начало работы¶Getting started
3.8.1.1. Из командной строки¶From the command-line
Изменено в версии 3.6.
При общесистемной установке Python 3.3 и новее загрузчик помещается в PATH. Загрузчик совместим со всеми доступными версиями Python, поэтому неважно, какая из них установлена. Чтобы проверить доступность загрузчика, выполните следующую команду в командной строке:
py
Вы должны заметить, что запущена последняя установленная версия Python – её можно завершить как обычно, а все дополнительные аргументы командной строки будут переданы напрямую Python.
Если у вас установлено несколько версий Python (например, 2.7 и 3.7), вы, должно быть, заметили, что запускается Python 3.7 – чтобы запустить 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. Виртуальные окружения¶Virtual environments
Новое в версии 3.5.
Если загрузчик запускается без явного указания версии Python и активно виртуальное окружение (созданное с помощью модуля стандартной библиотеки venv или внешнего инструмента virtualenv), загрузчик запустит интерпретатор виртуального окружения, а не глобальный. Чтобы запустить глобальный интерпретатор, либо деактивируйте виртуальное окружение, либо явно укажите глобальную версию Python.
3.8.1.3. Из сценария¶From a script
Давайте создадим тестовый сценарий 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. Из ассоциаций файлов¶From file associations
Загрузчик должен быть ассоциирован с файлами Python (т.е. файлами .py, .pyw, .pyc) при установке. Это означает, что при двойном щелчке по одному из этих файлов в проводнике Windows будет использоваться загрузчик, и поэтому вы можете использовать те же возможности, описанные выше, чтобы указать сценарию версию, которая должна использоваться.
Ключевое преимущество этого в том, что один загрузчик может одновременно поддерживать несколько версий Python в зависимости от содержимого первой строки.
3.8.2. Shebang-строки¶Shebang Lines
Если первая строка файла сценария начинается с #!, она называется «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 launcher 3.7, можно запросить 64-битную версию
с помощью суффикса «-64». Кроме того, можно указать старшую версию и
архитектуру без указания младшей (т.е. /usr/bin/python3-64).
Форма /usr/bin/env шебанг-строки обладает одним дополнительным свойством. Прежде чем искать установленные интерпретаторы Python, эта форма выполняет поиск исполняемого файла Python в PATH. Это соответствует поведению программы env в Unix, которая выполняет поиск PATH.
3.8.3. Аргументы в shebang-строках¶Arguments in shebang lines
Shebang-строки также могут указывать дополнительные параметры, передаваемые интерпретатору Python. Например, если у вас есть shebang-строка:
#! /usr/bin/python -v
Тогда Python будет запущен с опцией -v
3.8.4. Настройка¶Customization
3.8.4.1. Настройка через INI-файлы¶Customization via INI files
Средство запуска будет искать два .ini-файла: py.ini в каталоге «данные приложения» текущего пользователя (т.е. каталоге, возвращаемом вызовом функции Windows SHGetFolderPath с параметром CSIDL_LOCAL_APPDATA) и py.ini в том же каталоге, где находится средство запуска. Одни и те же .ini-файлы используются как для «консольной» версии средства запуска (py.exe), так и для «оконной» версии (pyw.exe).
Настройка, указанная в «каталоге приложения», имеет приоритет над настройкой рядом с исполняемым файлом, поэтому пользователь, у которого может не быть прав на запись в .ini-файл рядом с загрузчиком, может переопределить команды в этом глобальном .ini-файле.
3.8.4.2. Настройка версий Python по умолчанию¶Customizing default Python versions
В некоторых случаях в команду можно включить квалификатор версии, чтобы указать, какая версия 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. Диагностика¶Diagnostics
Если установлена переменная окружения PYLAUNCH_DEBUG (с любым значением), средство запуска выводит диагностическую информацию в stderr (т.е. на консоль). Эта информация одновременно является многословной и краткой, но она позволяет увидеть, какие версии Python были найдены, почему выбрана конкретная версия и точная командная строка, использованная для запуска целевого Python.
3.9. Поиск модулей¶Finding modules
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». Если домашний каталог найден, соответствующие поддиректории, добавляемые в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. Дополнительные модули¶Additional modules
Хотя Python стремится быть переносимым между всеми платформами, существуют функции, уникальные для Windows. Ряд модулей, как в стандартной библиотеке, так и внешних, а также фрагменты кода позволяют использовать эти возможности.
Стандартные модули, специфичные для Windows, описаны в Специфичные службы MS Windows.
3.10.1. PyWin32¶
Модуль PyWin32 от Марка Хаммонда – это набор модулей для расширенной поддержки Windows. Он включает утилиты для:
Component Object Model (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.10.3. WConio¶
Поскольку расширенный уровень работы с терминалом Python, curses, ограничен Unix-подобными системами, существует библиотека, эксклюзивная для Windows: Windows Console I/O for Python.
WConio – это обёртка для CONIO.H от Turbo-C, используемая для создания текстовых пользовательских интерфейсов.
3.11. Компиляция Python в Windows¶Compiling Python on 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++» от Sébastien Sauvage, 2003
3.12. Другие платформы¶Other Platforms
В процессе развития Python некоторые платформы, которые ранее поддерживались, больше не поддерживаются (из-за отсутствия пользователей или разработчиков). Обратитесь к PEP 11 для получения подробной информации о всех неподдерживаемых платформах.
Windows CE всё ещё поддерживается.
Установщик Cygwin также предлагает установить интерпретатор Python (см. исходные коды пакетов Cygwin, релизы мейнтейнера)
См. Python для Windows для получения подробной информации о платформах с предварительно собранными установщиками.