Python-сообщество
![]()
- Начало
- » Python для новичков
- » Запуск скриптов по таймеру
#1 Янв. 24, 2014 17:40:19
TroSer От: Харьков Зарегистрирован: 2013-11-13 Сообщения: 65 Репутация: 3 Профиль Отправить e-mail
Запуск скриптов по таймеру

Есть несколько скриптов которые нужно запускать одновременно под виндой без вовлечения базы данных. Хорошо с задачей справился Windows Task Scheduler. Интересует, есть ли какая альтернатива? Установил Z-Cron себе, вроде и срабатывает, но не всегда все скрипты. Создавал .exe с помощью py2exe, всё равно не помогло. Виндовс утилита меня устраивает на данный момент, просто интересно, есть ли такой инструментарий, может кто сталкивался.
Отредактировано TroSer (Янв. 24, 2014 21:44:06)
#2 Янв. 24, 2014 18:49:13
ajib6ept От: От: От: От: От: От: От: От: Зарегистрирован: 2013-08-04 Сообщения: 297 Репутация: 26 Профиль Отправить e-mail
Запуск скриптов по таймеру
У меня под Win2003 запускаются посредством nncron lite
_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don’t let PEP 8 make you insanely intolerant of other people’s code.
Запуск нескольких Python скриптов через bat файл
Доброй ночи, имеется 3 папки на рабочем столе с файлами pyton. Нужно создать bat-файл на рабочем столе, который запускал бы из каждой папки pyton-файл, который запускается в виде командной строки (одновременно должно запуститься 3 командных строки).
C:\Users\Name\Desktop\1\main.py
C:\Users\Name\Desktop\2\main.py
C:\Users\Name\Desktop\3\main.py
Либо же запускал из этих же папок bat-файлы или их ярлыки с рабочего стола, которые запускают предыдущие pyton-файлы (так же должно запуститься 3 командных строки одновременно).
C:\Users\Name\Desktop\1\run.bat
C:\Users\Name\Desktop\2\run.bat
C:\Users\Name\Desktop\3\run.bat
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Запуск нескольких Python скриптов через bat файл
Всем добрый день,я полный 0 в bat,помогите написать запуск нескольких python скриптов,желательно.
Запуск нескольких ps1 скриптов через Powershell
Всем привет. Есть папка в которой находятся ещё папки, в этих папка лежат файлы с одинаковым.
Запуск 1с через bat- файл, как в случае неправильной авторизации закрыть окно авторизации через bat- файл
Делаю запуск 1с через bat- файл. Как в случае неправильного имени или пароля пользователя окно.
Запуск .bat/.cmd через Python в отдельном процессе
Задача: . sys.exit() Timeout /t 3 /nobreak >nul . Вместо . в PYTHON надо вставить.
Запуск Java приложения, через файл *.bat
Здравствуйте, подскажите какие строки нужно прописать в *.bat файле для запуска Java приложения.
Нарушитель
8983 / 4841 / 1116
Регистрация: 12.03.2015
Сообщений: 22,897
Регистрация: 28.03.2022
Сообщений: 13
В том то и дело, что я всё это читал, и пытался сделать, но проблема в том, что при запуске батника открывается только одно окно командной строки, из первого пути.
5859 / 2617 / 1034
Регистрация: 06.06.2017
Сообщений: 8,928
@for /l %%i in (1,1,3) do @start /b %userprofile%\Desktop\%%i\main.py
Нарушитель
8983 / 4841 / 1116
Регистрация: 12.03.2015
Сообщений: 22,897
Сообщение от AV1CE 
В том то и дело, что я всё это читал, и пытался сделать
Покаж то, что получилось (батник).
Регистрация: 28.03.2022
Сообщений: 13
@echo off
start
python «C:\Users\Anton\Desktop\1\main.py»&»C:\Users\Anton\Desktop\2\main.py»&»C:\Users\ Anton\Desktop\3\main.py»
pause
Добавлено через 56 минут
Сообщение от FlasherX 
@for /l %%i in (1,1,3) do @start /b %userprofile%\Desktop\%%i\main.py
Спасибо, запустились 3 программы в одной командной строке, а есть возможность запустить в 3 разных командных строках?
Нарушитель
8983 / 4841 / 1116
Регистрация: 12.03.2015
Сообщений: 22,897
Сообщение от AV1CE 
а есть возможность запустить в 3 разных командных строках?
Убери параметр /b
Регистрация: 28.03.2022
Сообщений: 13
А есть вариант сделать так чтобы все 3 командные строки перезапускались если в одной из командных строк появлялась ошибка, ну т.е если появляется допустим слово «ошибка» или «обновление» скрипт считывал бы и перезапускал все 3 программы
Нарушитель
8983 / 4841 / 1116
Регистрация: 12.03.2015
Сообщений: 22,897
Сообщение от AV1CE 
А есть вариант сделать так чтобы все 3 командные строки перезапускались если в одной из командных строк появлялась ошибка, ну т.е если появляется допустим слово «ошибка» или «обновление» скрипт считывал бы и перезапускал все 3 программы
Ты с костылей начал, а теперь магии захотел.
Это так не работает.
Регистрация: 28.03.2022
Сообщений: 13
Просто, как не пытался разобраться во всём этом, не получилось нифига
Добавлено через 57 минут
Вот допустим у меня в одной из командных строк появляется фраза «Для продолжения нажмите любую клавишу», и хотелось бы чтобы все открытые окна командных строк перезапустились после появления данной фразы
Нарушитель
8983 / 4841 / 1116
Регистрация: 12.03.2015
Сообщений: 22,897
Сообщение от AV1CE 
Вот допустим у меня в одной из командных строк появляется фраза «Для продолжения нажмите любую клавишу», и хотелось бы чтобы все открытые окна командных строк перезапустились после появления данной фразы
Я не копенгаген в питоне, но что-то мне подсказывает, что для твоей задачи он неприменим или применим, но с большим трудом.
Что за страшную аццкую вундервафлю ты там рожаешь? А-ну колись давай!
Регистрация: 28.03.2022
Сообщений: 13
Сообщение от Verevkin 
Я не копенгаген в питоне, но что-то мне подсказывает, что для твоей задачи он неприменим или применим, но с большим трудом.
Что за страшную аццкую вундервафлю ты там рожаешь? А-ну колись давай!
Ну вот у меня есть бот, для накрутки валюты или же статистики в игре, я одновременно запускаю накрутки на нескольких аккаунтах, так вот запускается бот через батник который запускает файл питона «main.py» и в командной строке вся инфа по типу игра началась запрос принят, какой баланс, и иногда выдаёт ошибку и появляется данная строка «Для продолжения нажмите любую клавишу» и хотелось бы чтобы она каким-то образом считывалась из окон командных строк, и если в одном из 3 окон она появляется эта строка, эти 3 окна закрывались и запускались заново, пока что этих окон 3 но их может и больше быть
Нарушитель
8983 / 4841 / 1116
Регистрация: 12.03.2015
Сообщений: 22,897
Сообщение от AV1CE 
Ну вот у меня есть бот, для накрутки валюты или же статистики в игре, я одновременно запускаю накрутки на нескольких аккаунтах, так вот запускается бот через батник который запускает файл питона «main.py» и в командной строке вся инфа по типу игра началась запрос принят, какой баланс, и иногда выдаёт ошибку и появляется данная строка «Для продолжения нажмите любую клавишу» и хотелось бы чтобы она каким-то образом считывалась из окон командных строк, и если в одном из 3 окон она появляется эта строка, эти 3 окна закрывались и запускались заново, пока что этих окон 3 но их может и больше быть
Читер детектед!
Зачем это всё на питоне-то делать? Логичнее написать оконное многопоточное приложение, раз пошла такая пьянка.
Использование скриптов Python для пакетного согласования и закрепления версий
Администраторы баз геоданных ArcGIS могут использовать скрипты Python для автоматизации многих задач администрирования версии, которые обычно выполняются с использованием нескольких инструментов геообработки. В данном разделе описывается процесс, при помощи которого администраторы смогут запускать запланированное согласование версий в ночное время.
Многие администраторы хотят быть уверены в том, что во время согласования версий другие пользователи не подключены к базе данных. Используйте функции ArcPy ListUsers и DisconnectUser для того, чтобы убедиться, что к базе геоданных подключен только администратор.
Поиск подключенных пользователей
Сначала используйте функцию ListUsers для определения пользователей, подключенных к базе геоданных. Укажите административное подключение к базе геоданных для запуска функции ListUsers .
# get a list of connected users. userList = arcpy.ListUsers("Database Connections/admin.sde")
Анализ списка подключенных пользователей
После получения списка подключенных пользователей вы можете уведомить их о необходимости отключения от базы геоданных. Это можно сделать, получив список пользователей и их адресов электронной почты.
Для упрощения задачи в приведенном примере предполагается, что каждый пользователь, подключенный к базе геоданных, использует то же основное имя, которое указано в адресе электронной почты. Этот пример можно изменить для использования других способов определения адресов электронной почты.
# get a list of user names from the list of named tuples returned from ListUsers userNames = [u.Name for u in userList] # take the userNames list and make email addresses by appending the appropriate suffix. emailList = [name + '@company.com' for name in userNames]
Создание и отправка электронных писем
Используйте список адресов электронной почты для отправки из Python сообщений о необходимости отключения от базы геоданных. В данном примере используется модуль smtplib, входящий в Python, однако имеются и другие опции для отправки электронных писем с использованием нестандартных модулей.
import smtplib SERVER = "mailserver.yourcompany.com" FROM = "SDE Admin " TO = emailList SUBJECT = "Maintenance is about to be performed" MSG = "Auto generated Message.\n\rServer maintenance will be performed in 15 minutes. Please log off." # Prepare actual message MESSAGE = """\ From: %s To: %s Subject: %s %s """ % (FROM, ", ".join(TO), SUBJECT, MSG) # Send the mail server = smtplib.SMTP(SERVER) server.sendmail(FROM, TO, MESSAGE) server.quit()
Блокировка подключений к базе геоданных
Используйте функцию ArcPy AcceptConnections для блокировки подключений к базе геоданных через скрипт. Доступ к этой функции возможен только с использованием скрипта Python.
Это не позволит новым пользователям подключиться к базе геоданных. Существующие подключения по-прежнему действуют.
#block new connections to the database. arcpy.AcceptConnections('Database Connections/admin.sde', False)
Примечание:
Нет необходимости блокировать подключения к базе данных или отключать всех пользователей для проведения данного обслуживания. Если в вашей организации можно отключить всех пользователей, процесс сжатия будет более эффективным.
Приостановка скрипта
Чтобы предоставить пользователям время закончить свою работу перед отключением, выполнение скрипта необходимо приостановить на определенный промежуток времени. В данном примере модуль времени в Python используется для того, чтобы предоставить пользователям 15-минутный период отсрочки перед их отключением.
import time time.sleep(900)#time is specified in seconds
Отключение пользователей
Для отключения пользователей с помощью скрипта используйте функцию ArcPy DisconnectUser . Доступ к этой функции возможен только с использованием скрипта Python.
После того как все пользователи получили уведомления и выполнение скрипта было приостановлено на 15 минут, производится отключение оставшихся пользователей.
#disconnect all users from the database. arcpy.DisconnectUser('Database Connections/admin.sde', "ALL")
Примечание:
Если необходимо отключить только определенных пользователей, укажите строку или список строк Python с ID подключений данных пользователей. Эти ID возвращаются функцией ListUsers .
Пакетное согласование версий и фиксация изменений
Используйте инструмент Согласовать версии , чтобы согласовать и закрепить все версии в многопользовательской базе геоданных. Этот инструмент предоставляет возможности для согласования всех версий в базе геоданных с целевой версией ( ALL_VERSIONS ) или только тех версий, которые блокируют сжатие целевой версии ( BLOCKING_VERSIONS ). Этот инструмент позволяет выполнить эффективное сжатие так как он обеспечивает одновременное согласование и закрепление нескольких версий в надлежащем порядке. В этом примере инструмент запускается администратором базы геоданных. Подключение в качестве администратора дает возможность согласовать и закрепить все версии в базе геоданных, включая частные или защищенные версии других пользователей.
# Get a list of versions to pass into the ReconcileVersions tool. versionList = arcpy.ListVersions('Database Connections/admin.sde') # Execute the ReconcileVersions tool. arcpy.ReconcileVersions_management('Database Connections/admin.sde', "ALL_VERSIONS", "sde.DEFAULT", versionList, "LOCK_ACQUIRED", "NO_ABORT", "BY_OBJECT", "FAVOR_TARGET_VERSION", "POST", "DELETE_VERSION", "c:/temp/reconcilelog.txt")
Сжатие базы геоданных
После согласования и закрепления изменений важно выполнить сжатие базы геоданных, чтобы удалить всю лишнюю информацию и переместить изменения в бизнес-таблицы (основные таблицы).
# Run the compress tool. arcpy.Compress_management('Database Connections/admin.sde')
Разрешение подключений к базе геоданных
Теперь, после завершения согласования и закрепления версий и сжатия базы геоданных, вы можете разрешить пользователям подключение к ней.
# Allow new connections to the database. arcpy.AcceptConnections('Database Connections/admin.sde', True)
Перестроение индексов и обновление статистики
По завершении сжатия рекомендуется перестроить индексы и обновить статистику. Эти шаги можно выполнить с использованием инструментов Перестроить индексы и Анализировать наборы данных . Эти инструменты позволяют ввести список наборов данных и выполнить их функции для всех наборов данных одновременно. Эти инструменты, при запуске от имени администратора базы геоданных, также обновляют статистику и перестраивают индексы соответствующих системных таблиц. Имейте в виду, что в некоторых СУБД при перестроении индексов также обновляется статистика. Если это происходит в используемой вами СУБД, вам необходимо только перестроить индексы.
Первый этап этого процесса – получение списка данных и пользователей, которые ими владеют. Это необходимо сделать, поскольку индексы и статистика могут быть обновлены только владельцем данных.
После того как определен список данных, которыми владеет пользователь, их можно обработать с использованием инструментов Перестроить индексы и Анализировать наборы данных .
Если у вас имеется несколько владельцев данных, необходимо построить список данных для каждого владельца и запустить инструменты Перестроить индексы и Анализировать наборы данных при подключении от имени каждого пользователя.
# set the workspace arcpy.env.workspace = "C:\\Projects\\MyProject\\user1.sde" # Set a variable for the workspace workspace = arcpy.env.workspace # Get the user name for the workspace # this assumes you are using database authentication. # OS authentication connection files do not have a 'user' property. userName = arcpy.Describe(workspace).connectionProperties.user # Get a list of all the datasets the user has access to. # First, get all the stand alone tables, feature classes and rasters owned by the current user. dataList = arcpy.ListTables('*.' + userName + '.*') + arcpy.ListFeatureClasses('*.' + userName + '.*') + arcpy.ListRasters('*.' + userName + '.*') # Next, for feature datasets owned by the current user # get all of the featureclasses and add them to the master list. for dataset in arcpy.ListDatasets('*.' + userName + '.*'): dataList += arcpy.ListFeatureClasses(feature_dataset=dataset) # Pass in the list of datasets owned by the connected user to the rebuild indexes # and update statistics on the data tables arcpy.RebuildIndexes_management(workspace, "NO_SYSTEM", dataList, "ALL") arcpy.AnalyzeDatasets_management(workspace, "NO_SYSTEM", dataList, "ANALYZE_BASE", "ANALYZE_DELTA", "ANALYZE_ARCHIVE"
Примечание:
Токены подстановочных знаков используются для выбора наборов данных, принадлежащих пользователям, и являются специфичными для базы данных. В приведенном выше примере (‘*.’ + userName + ‘.*’) будет работать в SQL Server, PostgreSQL или DB2. В Oracle можно использовать следующие подстановочные знаки: (userName + ‘.*’) . В Informix можно использовать следующие специальные символы: (‘*:’ + userName + ‘.*’) .
Пример полного кода
В примере кода, приведенном ниже, объединены все описанные выше действия для выполнения следующих операций в качестве администратора базы геоданных:
- Определение подключенных пользователей.
- Отправка уведомлений по электронной почте.
- Предотвращение принятия новых подключений к базе геоданных.
- Отключение пользователей.
- Согласование и фиксация изменений.
- Cжатие базы геоданных.
- Разрешение начать прием новых подключений к базе геоданных.
- Перестроение индексов и обновление статистики системных таблиц.
import arcpy, time, smtplib # Set the workspace arcpy.env.workspace = 'C:\\Projects\\MyProject\\admin.sde' # Set a variable for the workspace adminConn = arcpy.env.workspace # Get a list of connected users. userList = arcpy.ListUsers(adminConn) # Get a list of user names of users currently connected and make email addresses emailList = [user.Name + "@yourcompany.com" for user in arcpy.ListUsers(adminConn)] # Take the email list and use it to send an email to connected users. SERVER = "mailserver.yourcompany.com" FROM = "SDE Admin " TO = emailList SUBJECT = "Maintenance is about to be performed" MSG = "Auto generated Message.\n\rServer maintenance will be performed in 15 minutes. Please log off." # Prepare actual message MESSAGE = """\ From: %s To: %s Subject: %s %s """ % (FROM, ", ".join(TO), SUBJECT, MSG) # Send the mail print("Sending email to connected users") server = smtplib.SMTP(SERVER) server.sendmail(FROM, TO, MESSAGE) server.quit() # Block new connections to the database. print("The database is no longer accepting connections") arcpy.AcceptConnections(adminConn, False) # Wait 15 minutes time.sleep(900) # Disconnect all users from the database. print("Disconnecting all users") arcpy.DisconnectUser(adminConn, "ALL") # Get a list of versions to pass into the ReconcileVersions tool. # Only reconcile versions that are children of Default print("Compiling a list of versions to reconcile") verList = arcpy.ListVersions(adminConn) versionList = [ver.name for ver in verList if ver.parentVersionName == 'sde.DEFAULT'] # Execute the ReconcileVersions tool. print("Reconciling all versions") arcpy.ReconcileVersions_management(adminConn, "ALL_VERSIONS", "sde.DEFAULT", versionList, "LOCK_ACQUIRED", "NO_ABORT", "BY_OBJECT", "FAVOR_TARGET_VERSION", "POST", "DELETE_VERSION", "c:/temp/reconcilelog.txt") # Run the compress tool. print("Running compress") arcpy.Compress_management(adminConn) # Allow the database to begin accepting connections again print("Allow users to connect to the database again") arcpy.AcceptConnections(adminConn, True) # Update statistics and indexes for the system tables # Note: to use the "SYSTEM" option the user must be an geodatabase or database administrator. # Rebuild indexes on the system tables print("Rebuilding indexes on the system tables") arcpy.RebuildIndexes_management(adminConn, "SYSTEM") # Update statistics on the system tables print("Updating statistics on the system tables") arcpy.AnalyzeDatasets_management(adminConn, "SYSTEM") print("Finished.")
Автоматическое планирование выполнения скрипта
После завершения составления скрипта можно запланировать его запуск с установленными интервалами в определенное время с использованием системного средства планирования задач.
Для получения информации о настройке запуска запланированных задач в Windows см. раздел Составление скрипта Python для запуска в определенное время.
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 наряду с исполняемым файлом. Этот файл определяет список параметров и значений. Если значение указано как атрибут, оно будет преобразовано в число, если это возможно. Значения, предоставляемые в качестве текста элемента, всегда остаются как строки. В этом примере файл задает те же параметры, что и в предыдущем примере:
Name="InstallAllUsers" Value="no" /> Name="Include_launcher" Value="0" /> Name="Include_test" Value="no" /> Name="SimpleInstall" Value="yes" /> Name="SimpleInstallDescription">Just for me, no test suite
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.
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 .
Даже если режим UTF-8 отключен, Python по умолчанию использует UTF-8 в Windows для:
- Консоль I/O включая стандартные I/O (подробнее см. PEP 528).
- Файловая система кодировка (подробнее см. раздел PEP 529).
3.8. Python лаунчер для Windows¶
Добавлено в версии 3.3.
Средство запуска Python для Windows — это утилита, которая помогает находить и выполнять различные версии Python. Он позволяет сценариям (или командной строке) указывать предпочтения для конкретной версии Python, а также находить и выполнять эту версию.
В отличие от переменной PATH , пусковая установка правильно выберет наиболее подходящую версию Python. Предпочтительны установки для каждого пользователя по сравнению с системными установками, а также заказы по языковой версии, а не по последней установленной версии.
Пусковая установка изначально была указана в PEP 397.
3.8.1. Начало¶
3.8.1.1. Из командной строки¶
Изменено в версии 3.6.
Общесистемные установки Python 3.3 и позже поставят пусковую установку на ваш PATH . Пусковая установка совместима со всеми доступными версиями Python, поэтому не имеет значения, какая именно версия установлена. Чтобы проверить доступность средства запуска, выполните следующую команду в командной строке:
Следует обнаружить, что запущена последняя установленная версия 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 (где — текущий квалификатор основной версии, как определено выше). Если такой возможности не найдено, средство запуска перечисляет установленные версии 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\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-файл.
Это гарантирует, что файлы в общесистемной установке не будут иметь приоритет над копией стандартной библиотеки в комплекте с приложением. В противном случае у пользователей могут возникнуть проблемы с использованием приложения. Следует отметить, что первое предложение является наилучшим, поскольку остальные все еще могут быть подвержены нестандартным путям в реестре и пакетах сайта пользователя.
- Добавление ._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 для подробную информацию о платформах с предварительно скомпилированными установщиками.
Содержание
- 3. Использование Python в Windows
- 3.1. Полная установка
- 3.1.1. Инсталляционные шаги
- 3.1.2. Снятие ограничения MAX_PATH
- 3.1.3. Установка без UI
- 3.1.4. Установка без загрузки
- 3.1.5. Изменение установки
- 3.2.1. Известные проблемы
- 3.4.1. Применение Python
- 3.4.2. Встраивание Python
- 3.6.1. Exursus: задание переменных среды
- 3.6.2. Поиск исполняемого файла Python
- 3.8.1. Начало
- 3.8.1.1. Из командной строки
- 3.8.1.2. Виртуальные среды
- 3.8.1.3. Из сценария
- 3.8.1.4. От ассоциаций файла
- 3.8.4.1. Настройка с помощью INI-файлов
- 3.8.4.2. Настройка версий Python по умолчанию
- 3.10.1. PyWin32
- 3.10.2. cx_Freeze
- 3.10.3. WConio
- 3.1. Полная установка