3. Использование Python в Windows¶
В этом документе представлен обзор поведения Windows, о котором вы должны знать при использовании Python в Microsoft Windows.
В отличие от большинства Unix-систем и служб, Windows не включает в себя поддерживаемую системой установку Python. Чтобы сделать Python доступным, команда CPython скомпилировала установщики Windows (MSI-пакеты) с каждый релиз для много лет. Эти инсталляторы, прежде всего, предназначены, чтобы добавить установку в расчете на пользователя питона с основным интерпретатор и библиотекой, являющейся используемый единственным пользователем. Инсталлятор также в состоянии установить для всех пользователей единственной машины, и отдельный 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-разрядной версий интерпретатор. web installer - маленькая начальная загрузка, и он автоматически загрузит необходимые компоненты по мере необходимости. offline installer включает компоненты, необходимые для установки по умолчанию, и требует подключения к интернету только для дополнительных функций. Другие способы избежать загрузки во время установки см. в разделе Установка без загрузки.
После запуска программы установки можно выбрать один из двух вариантов:
Если выбрать «Установить сейчас»:
- Вы будете, not должен быть администратором (если системное обновление для библиотеки во время выполнения C не требуется, или вы устанавливаете Python лаунчер для Windows для всех пользователей)
- Python будет установлен в ваш пользовательский каталог
- Python лаунчер для Windows, будет установлен согласно выбору у основания первой страницы,
- стандартная библиотека, набор тестов, запускальщик и pip будут установлены
- если отобрано, устанавливать справочник будет добавлен к вашим коротким путям
PATH
, - только будет видимо для нынешнего пользователя
При выборе «Настроить установку» можно выбрать устанавливаемые компоненты, расположение установки и другие параметры или действия после установки. Чтобы установить символы отладки или двоичные файлы, необходимо использовать этот параметр.
Чтобы выполнить установку для всех пользователей, выберите «Настроить установку». В данном случае:
- Вы можете быть обязаны обеспечивать административные полномочия или одобрение,
- Python будет установлен в каталог Program Files,
- Python лаунчер для Windows будет установлен в дополнительные функции каталога Windows
- может быть отобран во время установки
- стандартная библиотека может быть предварительно собрана к bytecode
- если отобрано, устанавливать справочник будет добавлен к системе, короткие пути
PATH
- Шарткаты доступны для всех пользователей
3.1.2. Снятие ограничения MAX_PATH¶
Исторически Windows имеет ограниченную длину пути до 260 символов. Это означает, что пути длиннее, чем это, не будут разрешаться, и в результате возникнут ошибки.
В последних версиях Windows это ограничение может быть расширено примерно до
32000 символов. Вашему администратору нужно будет активировать групповую политику
«Enable Win32 long paths» или установить LongPathsEnabled
на 1
в разделе
реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
.
Это позволяет функции open()
, модулю os
и большинству других
функций пути принимать и возвращать пути более 260 символов.
После изменения вышеуказанной опции дальнейшая настройка не требуется.
Изменено в версии 3.6: Поддержка длинных путей включена в Python.
3.1.3. Установка без UI¶
Все параметры, доступные в пользовательском интерфейсе установщика, также можно указать из командной строки, что позволяет установщикам со сценариями реплицировать установку на многих компьютерах без взаимодействия с пользователем. Эти параметры также могут быть установлены без подавления пользовательского интерфейса для изменения некоторых значений по умолчанию.
Чтобы полностью скрыть инсталлятор UI и установить 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 | Пользовательский каталог установки по умолчанию, отображаемый в UI | (пусто) | |
AssociateFiles | Создайть файловые ассоциации, если | 1 лаунчер также установлен. | | ||
CompileAll | Компилировать все .py файлы в
.pyc . |
0 | |
PrependPath | Добавление каталогов установки
tи 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 | Отключить большинство UI | 0 | |
SimpleInstallDescription | Настраиваемое сообщение, отображаемое при использовании упрощенного UI установки. | (пусто) |
Например, чтобы тихо установить дефолт, общесистемную установку 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 не включены в начальную загрузку инсталлятора, выбирание тех особенностей может потребовать подключения к интернету. Чтобы избежать этой потребности, все возможные компоненты могут быть загружены по требованию, чтобы создать полный layout, который больше не будет требовать подключения к интернету независимо от отобранных особенностей. Следует отметить, что эта загрузка может быть больше, чем требуется, но при выполнении большого количества установок очень полезно иметь локально кэшированную копию.
Выполните следующую команду из командной строки, чтобы загрузить все возможные
требуемые файлы. Не забудьте заменить python-3.8.0.exe
фактическим именем программы
установки и создать макеты в собственных каталогах, чтобы избежать коллизий
между файлами с одним и тем же именем.
python-3.8.0.exe /layout [optional target directory]
Вы можете также определить выбор /quiet
скрыть дисплей прогресса.
3.1.5. Изменение установки¶
Как только Python был установлен, вы можете добавить или удалить особенности через инструмент программ и особенностей, который является частью Windows. Выберите вход Python и выберите «Удаление/Изменение», чтобы открыть инсталлятор в режиме обслуживания.
«Modify» позволяет добавлять или удалять компоненты, изменяя флажки - неизмененные флажки ничего не будут устанавливать и удалять. Некоторые параметры нельзя изменить в этом режиме, например каталог установки; чтобы изменить их, вы должны будете удалить и затем повторно установить Python полностью.
Функция восстановления проверит все файлы, которые должны быть установлены с использованием текущих параметров, и заменит все файлы, которые были удалены или изменены.
«Удаление» удалит Python полностью, за исключением Python лаунчер для Windows, у которого есть его собственный вход в программах и особенностях.
3.2. Пакет Microsoft Store¶
Добавлено в версии 3.7.2.
Пакет Microsoft Store - легко устанавливаемый Python интерпретатор, который предназначен главным образом для интерактивного использования, например, студентами.
Чтобы установить пакет, убедитесь в наличии последних обновлений Windows 10 и найдите в приложении Microsoft Store «Python 3.8». Гарантируйте, что приложение, которое вы выбираете, выпущено фондом программного обеспечения Python, и установите его.
Предупреждение
Python всегда будет доступен бесплатно в Microsoft Store. Если вас попросят оплатить его, вы не выбрали правильный пакет.
После установки Python можно запустить, найдя его в Start. Кроме того, он
будет доступен в любой командной строке или в сеансе 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, но не приведет к удалению виртуальных сред
3.2.1. Известные проблемы¶
Из-за ограничений на приложения Microsoft Store скрипты Python могут не
иметь полного доступа для записи в общие расположения, такие как TEMP
и
реестр. Если скрипты должны изменить общие расположения, необходимо установить
полную программу установки.
Для получения более подробной информации о технической основе этих ограничений, пожалуйста, обратитесь к документации Microsoft по упакованным приложения с полным доверием, в настоящее время доступные по адресу 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 является «диспетчером пакетов для .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
. Это содержит файл с
свойсвами python.props
MSBuild, который может быть используемый в проекте
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 для автоматических обновлений. Как правило, сторонние пакеты должны рассматриваться как часть приложения («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.
3.6. Настройка Python¶
Чтобы управлять Python удобно от командной строки, вы могли бы рассмотреть изменение некоторых переменных окружения по умолчанию в Windows. В то время как программа установки предоставляет возможность настройки переменных PATH и PATHEXT, это надежно только для одной системной установки. При регулярном использовании нескольких версий Python рассмотрите возможность использования Python лаунчер для Windows.
3.6.1. Exursus: задание переменных среды¶
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.
Чтобы навсегда изменить переменные среды по умолчанию, нажмите кнопку «Пуск» и выполните поиск «изменить переменные среды» или откройте раздел свойства системы Advanced system settings и нажмите кнопку Environment Variables. В этом диалоговом окне можно добавлять или изменять пользовательские и системные переменные. Для изменения системных переменных необходим неограниченный доступ к компьютеру (т.е. права администратора).
Примечание
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
- Установка переменных среды, Louis J. Farrugia
3.6.2. Поиск исполняемого файла Python¶
Изменено в версии 3.5.
Помимо использования автоматически созданного входа меню начала для переводчика Python, вы могли бы хотеть начать Python в командной строке. Установщик может настроить его для вас.
На первой странице инсталлятора выбор маркировал, «Добавьте, что Python к
PATH» может быть отобран, чтобы сделать, чтобы инсталлятор добавил устанавливать
местоположение в PATH
. Также добавляется расположение папки Scripts\
.
Это позволяет ввести python для запуска интерпретатора и pip для
установщика пакета. Таким образом, сценарии можно также выполнять с опциями
командной строки, см. документацию Командная строка.
Если этот параметр не включен во время установки, всегда можно повторно
запустить программу установки, выбрать «Modify» и включить ее. Кроме того,
можно вручную изменить PATH
, используя направления в Exursus: задание переменных среды.
Необходимо задать переменную среды 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 Subsystem для Linux).
Вы можете использовать режим UTF-8, чтобы изменить текст по умолчанию
кодировка на UTF-8. Режим UTF-8 можно включить с помощью параметра командной
строки -X utf8
или переменной среды PYTHONUTF8=1
. См. PYTHONUTF8
для
предоставления возможности режима UTF-8 и Exursus: задание переменных среды для того, как изменить
переменные окружения.
При включенном режиме 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, вы установили, попробуйте command:
py -2
Должна быть найдена последняя версия запуска Python 2.x.
Если отображается следующая ошибка, не установлена программа запуска:
py не распознается как внутренняя или внешняя команда, действующая
программа или пакетный файл.
Установки в расчете на пользователя 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 2.x, который вы установили. Это
для обратной совместимости и для совместимости с Unix, где
команда python
обычно относится к Python 2.
3.8.1.4. От ассоциаций файла¶
При установке средство запуска должно было быть связано с файлами Python
(например, .py
, .pyw
, .pyc
). Это означает, что при двойном
щелчке по одному из этих файлов из проводника Windows будет использоваться
средство запуска, поэтому можно использовать те же средства, что описаны выше,
чтобы сценарий указывал версию, которая должна быть используемый.
Ключевым преимуществом этого является то, что одна пусковая установка может поддерживать несколько версий Python одновременно в зависимости от содержимого первой строки.
3.8.2. Шибанг строки¶
Если первая строка файла сценария начинается с #!
, она называется
строкой «шибанг». Linux и другие Unix подобные операционные системы имеют
собственную поддержку таких строк и они обычно используемый на таких системах,
чтобы указать, как должен выполняться скрипт. Эта пусковая установка позволяет
тем же объектам быть используемый со сценариями Python на Windows, и примеры
выше демонстрируют свое использование.
Чтобы позволить линиям хижины в сценариях 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/python2.7-32
запросит использование 32-битного питона 2.7.
Добавлено в версии 3.7: Начиная с python launcher 3.7 можно запросить 64-разрядную версию по суффиксу
«-64». Кроме того, можно указать основную архитектуру и архитектуру без минора
(т.е. /usr/bin/python3-64
).
/usr/bin/env
форма линии шебанга имеет еще одно специальное свойство. Перед
поиском установленных переводчиков Python эта форма будет искать выполнимый
PATH
исполняемый файл Python. Это соответствует поведению программы
Unix env
, которая выполняет поиск PATH
.
3.8.3. Аргументы в шибанг строках¶
Линии 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-битными внедрениями того же (major.minor) 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 (т.е. на
консоль). В то время как этой информации удается быть одновременно многословна
and краткий, она должна позволить вам видеть, какие версии Python
были расположены, почему особая версия была выбрана и точная командная строка
используемый, чтобы выполнить целевой Python.
3.9. Нахождение модулей¶
Python обычно хранит свою библиотеку (и таким образом ваша папка пакетов
сайта) в инсталляционном справочнике. Таким образом, если вы установили
Python to 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
не найден, то в Windows: заполняется файл sys.path
- В начале добавляется пустая запись, соответствующая текущему каталогу.
- Если переменная среды
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 Home» не будет выведен, таким образом, основной путь от регистрации будет используемый. Другие «пути приложения» в реестре всегда считываются.
- Если 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-файл.
Это гарантирует, что файлы в общесистемной установке не будут иметь приоритет над копией стандартной библиотеки в комплекте с приложением. В противном случае у пользователей могут возникнуть проблемы с использованием приложения. Следует отметить, что первое предложение является наилучшим, поскольку остальные все еще могут быть подвержены нестандартным путям в реестре и пакетах сайта пользователя.
Изменено в версии 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 модуль Mark Hammond - это набор модулей для расширенной поддержки Windows. Сюда входят утилиты для:
- Component Object Model (COM)
- Вызовы Win32 API
- Реестр
- Журнал событий
- Microsoft Foundation Classes (MFC) пользовательские интерфейсы
PythonWin - образец приложения MFC, поставляемого вместе с PyWin32. Это встраиваемая среда IDE со встроенным отладчиком.
См.также
- Win32 How Do I…?
- Тим Голден
- Python и COM
- Дэвида и Пола Бодди
3.10.2. cx_Freeze¶
cx_Freeze - расширение
distutils
(см. Extending Distutils), которое помещает сценарии Python в
исполняемые программы Windows (файлы *.exe
). После этого можно
распространять приложение, не требуя от пользователей установки Python.
3.10.3. WConio¶
Начиная с Python’s, продвинутого, предельный слой обработки, curses
,
ограничен подобными Unix системами, есть библиотека, исключительная к Windows
также: Windows Console I/O для Python.
WConio является
оберткой для CONIO.H
Turbo-C, используемый для создания текстовых
пользовательских интерфейсов.
3.11. Компиляция Python в Windows¶
Если вы хотите скомпилировать CPython самостоятельно, первое, что вы должны сделать, это получить source. Вы можете загрузить источник последнего выпуска или просто скачайте свежую checkout.
Исходное дерево содержит построить решение и файлы проекта для 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. Другие платформы¶
При продолжающейся разработке Python некоторые платформы, которые используемый поддерживать раньше, больше не поддерживаются (из-за отсутствия пользователей или разработчиков). Сведения обо всех неподдерживаемых платформах см. в разделе PEP 11.
- Windows CE по-прежнему поддерживается.
- Cygwin установщик также предлагает установить Python интерпретатор (cf. Источник пакета Cygwin, Релизы мейнтейнера)
См. Python для Windows для подробную информацию о платформах с предварительно скомпилированными установщиками.