Как получить путь до запущенного процесса?
Можно ли как-то получить полный путь до запущенного процесса? Например запущен cmd.exe и я получаю откуда он запущен?
Отслеживать
задан 3 авг 2018 в 10:23
Alex Firsov Alex Firsov
551 6 6 серебряных знаков 20 20 бронзовых знаков
Какой путь? Curdir, каталог с exe, каталог, откуда он запущен?
3 авг 2018 в 10:30
Запущен foo.py и cmd.exe, foo.py должен определить откуда запущен(или где лежит) cmd.exe
3 авг 2018 в 10:37
Посмотрите в сторону модуля psutil . В нём есть класс psutil.Process , у которого есть метод cwd() для получения полной рабочей директории процесса и, например, cmdline() для получения собственно строки, с помощью которой запущен процесс. Скорее всего, этого хватит для поиска пути. С помощью psutil.process_iter() можно пройтись по процессам. psutil.readthedocs.io/en/latest Не имею доступа к windows, поэтому точнее сказать не могу, но psutil кросплатформенный.
– user247581
3 авг 2018 в 11:38
Можно пример кода?
3 авг 2018 в 14:00
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
При помощи модуля psutil можно сделать так:
import psutil # pip install psutil proc_name = 'top' #'cmd.exe' for proc in psutil.process_iter(): # Пока скрипт работает, процесс уже может перестать существовать # (поскольку между psutil.process_iter() и proc.name() проходит время) # и будет выброшено исключение psutil.NoSuchProcess try: proc_name_in_loop = proc.name() except psutil.NoSuchProcess: pass else: if proc_name_in_loop == proc_name: print(proc.cwd()) print(proc.exe())
При этом proc.cwd() выведет рабочую директорию процесса, а proc.exe() — путь к исполняемому файлу. Ещё может быть полезным список, который возвращает proc.cmdline() : так, например, когда я у себя запускаю скрипт на питоне, записанный в file_name.py, результат такой:
['python3', 'file_name.py']
В частности, его можно использовать, если несколько запущенных процессов имеют одно имя, но разные аргументы
P.S. этот ответ для третьей версии питона в Linux, я лишён возможности проверить на втором питоне или windows, но суть не должна измениться
1. Командная строка и среда¶
CPython интерпретатор просматривает командную строку и окружающую среду для различных параметров настройки.
Детали реализации CPython: Схемы командной строки других реализаций могут отличаться. Дополнительные ресурсы см. в разделе Альтернативные реализации .
1.1. Командная строка¶
При вызове Python можно указать любой из этих параметров:
python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]
Самый распространенный вариант использования — это, конечно, простой вызов сценария:
python myscript.py
1.1.1. Интерфейсные опции¶
Интерфейс интерпретатор напоминает интерфейс раковины UNIX, но обеспечивает некоторый дополнительный методы invocation:
- При вызове со стандартным входом, подключенным к устройству tty, он запрашивает команды и выполняет их до тех пор, пока не будет прочитан EOF (символ конца файла, который можно создать с помощью Ctrl-D в UNIX или Ctrl-Z, Enter в Windows).
- При вызове с аргументом имени файла или с файлом в качестве стандартного ввода он считывает и выполняет сценарий из этого файла.
- При вызове с аргументом имени каталога он считывает и выполняет сценарий с соответствующим именем из этого каталога.
- При вызове с помощью -c command он выполняет оператор(ы) Python, заданные как command. Здесь command может содержать несколько инструкции, разделенных новыми строками. Ведущий пробел значителен в Python заявлениях!
- При вызове с помощью метода -m module-name данный модуль располагается на пути модуля Python и выполняется как сценарий.
В неинтерактивном режиме весь ввод анализируется перед его выполнением.
Параметр интерфейса завершает список опций, используемых интерпретатором, все последовательные аргументы заканчиваются на sys.argv — обратите внимание, что первый элемент, нижний индекс нуль ( sys.argv[0] ), является строка, отражающим источник программы.
Выполните команду Python код в command. command может быть одним или несколькими инструкции, разделенными новыми линиями, со значительным начальным пробелом, как в обычном модуле код.
Если этот параметр задан, первый элемент sys.argv будет «-c» , а текущий каталог будет добавлен к началу sys.path (что позволит импортировать модули в этот каталог как модули верхнего уровня).
Raises an auditing event cpython.run_command with argument command .
Ищите sys.path названный модуль и выполните его содержание как модуль __main__ .
Так как аргумент — имя module, вы не должны давать расширение файла ( .py ). Имя модуля должно быть действительным абсолютным именем модуля Python, но внедрение может не всегда проводить в жизнь это (например, оно может позволить вам использовать имя, которое включает дефис).
Также разрешены имена пакетов (включая пакеты пространства имен). Когда имя пакета будет поставляться вместо нормального модуля, интерпретатор выполнит .__main__ как главный модуль. Это поведение намеренно аналогично обработке каталогов и zipfiles, которые передаются интерпретатор в качестве аргумента сценария.
Этот параметр не может быть используемый со встроенными модулями и модулями расширений, написанными на языке C, поскольку они не имеют файлов модулей Python. Однако это может все еще быть используемый для предварительно собранных модулей, даже если файл первоисточника не доступен.
Если эта опция задана, первым элементом sys.argv будет полный путь к файлу модуля (во время нахождения файла модуля первый элемент будет установлен в «-m» ). Как и в случае с опцией -c , текущий каталог будет добавлен к началу sys.path .
Выбор -I может быть используемый, чтобы управлять сценарием в изолированном режиме, где sys.path не содержит ни текущего каталога, ни справочника пакетов сайта пользователя. Все переменные среды PYTHON* также игнорируются.
Многие стандартные библиотечные модули содержат код, вызываемые при выполнении в качестве сценария. Примером может служить модуль timeit :
python -m timeit -s 'setup here' 'benchmarked code here' python -m timeit -h # for details
Raises an auditing event cpython.run_module with argument module-name .
runpy.run_module() Эквивалентные функциональные возможности, непосредственно доступные для Python кода
PEP 338 – выполнение модулей в виде сценариев
Изменено в версии 3.1: Укажите имя пакета для запуска подмодуля __main__ .
Изменено в версии 3.4: поддерживаются также пакеты пространства имен
Считывание команд со стандартного входа ( sys.stdin ). Если стандартный вход является клеммой, подразумевается -i .
Если этот параметр задан, первый элемент sys.argv будет «-» , а текущий каталог будет добавлен к началу sys.path .
Raises an auditing event cpython.run_stdin with no arguments.
Выполните Python код, содержащийся в script, который должен быть путем файловой системы (абсолютным или относительным) со ссылкой на файл Python, каталог, содержащий файл __main__.py , или zipfile, содержащий файл __main__.py .
Если этот параметр задан, первым элементом sys.argv будет имя сценария, указанное в командной строке.
Если имя сценария ссылается непосредственно на файл Python, каталог, содержащий этот файл, добавляется к началу sys.path , и файл выполняется как модуль __main__ .
Если имя сценария ссылается на каталог или zipfile, имя сценария добавляется к началу sys.path , и файл __main__.py в этом расположении выполняется как модуль __main__ .
Выбор -I может быть используемый, чтобы управлять сценарием в изолированном режиме, где sys.path не содержит ни справочника сценария, ни справочника пакетов сайта пользователя. Все переменные среды PYTHON* также игнорируются.
Raises an auditing event cpython.run_file with argument filename .
runpy.run_path() эквивалентные функциональные возможности, непосредственно доступные для Python кода
Если параметр интерфейса не задан, -i подразумевается, sys.argv[0] является пустым строка ( «» ) и текущий каталог будет добавлен к началу sys.path . Кроме того, автоматически включаются функции заполнения вкладок и редактирования журнала, если они доступны на вашей платформе (см. Конфигурация Readline ).
Изменено в версии 3.4: Автоматическое включение заполнения вкладок и редактирования журнала.
1.1.2. Универсальные опции¶
Напечатайте краткое описание всех параметров командной строки.
Распечатайте номер версии Python и выйдите. Примером вывода может быть:
Python 3.8.0b2
При двойном вводе напечатайте дополнительную информацию о сборке, например:
Python 3.8.0b2+ (3.8:0c076caaa8, Apr 20 2019, 21:55:00) [GCC 6.2.0 20161005]
Добавлено в версии 3.6: The -VV option.
1.1.3. Причие опции¶
Выдайте предупреждение при сравнении bytes или bytearray с str или bytes с int . Выдайте ошибку, если опция задана дважды ( -bb ).
Изменено в версии 3.5: Влияет на сравнение bytes с int .
Если задано, Python не будет пытаться записать файлы .pyc при импорте исходных модулей. См. также раздел PYTHONDONTWRITEBYTECODE .
Управление поведением проверки хэш-файлов .pyc . См. Инвалидация кэша байткода . Если установлено значение default , файлы кэша байт-кодов на основе отмеченных и не отмеченных хэш-кодов проверяются в соответствии с семантикой по умолчанию. Если установлено значение always , все файлы .pyc на основе хэша, если они установлены или не установлены, проверяются по соответствующему исходному файлу. Если установлено значение never , файлы .pyc на основе хэша не проверяются по соответствующим исходным файлам.
Этот параметр не влияет на семантику файлов .pyc на основе временных меток.
Включите продукцию отладки парсер (для эксперта только, в зависимости от вариантов компиляции). См. также раздел PYTHONDEBUG .
Игнорируйте все переменные среды PYTHON* , например, PYTHONPATH и PYTHONHOME , которые могут быть установлены.
Когда сценарий передается в качестве первого аргумента или используется параметр -c , после выполнения сценария или команды, даже если sys.stdin не является терминалом, следует перейти в интерактивный режим. Файл PYTHONSTARTUP не считан.
Это может быть полезно для проверки глобальных переменных или трассировки стека, когда сценарий вызывает исключение. См. также раздел PYTHONINSPECT .
Запустить Python в изолированном режиме. Это также подразумевает -E и -s. В изолированном режиме sys.path не содержит ни каталог сценария, ни каталог пакетов сайта пользователя. Все переменные среды PYTHON* также игнорируются. Дополнительные ограничения могут быть введены для предотвращения введения пользователем вредоносного код.
Добавлено в версии 3.4.
Удалите утверждение инструкции и любое код, зависящее от значения __debug__ . Увеличьте имя файла для скомпилированных ( байт-код ) файлов, добавив .opt-1 перед расширением .pyc (см. PEP 488). См. также раздел PYTHONOPTIMIZE .
Изменено в версии 3.5: Измените имена файлов .pyc согласно PEP 488.
Делайте -O , а также выбрасывайте докстринги. Увеличьте имя файла для скомпилированных ( байт-код ) файлов, добавив .opt-2 перед расширением .pyc (см. PEP 488).
Изменено в версии 3.5: Измените имена файлов .pyc согласно PEP 488.
Не отображать сообщения об авторских правах и версии даже в интерактивном режиме.
Добавлено в версии 3.2.
Включить хеш-рандомизацию. Эта опция действует только в том случае, если для переменной среды PYTHONHASHSEED установлено значение 0 , поскольку по умолчанию хеш-рандомизация включена.
В предыдущих версиях Python этот параметр включает рандомизацию хеширования, так что значения __hash__() объектов str и bytes «засолены» непредсказуемым случайным значением. Хотя они остаются постоянными в рамках отдельного процесса Python, они не предсказуемы между повторными вызовами Python.
Рандомизация хеширования предназначена для обеспечения защиты от отказа в обслуживании, вызванного тщательно подобранными входами, которые используют наихудшую производительность конструкции dict, сложность O(n^2). Дополнительные сведения см. в разделе http://www.ocert.org/advisories/ocert-2011-003.html.
PYTHONHASHSEED позволяет задать фиксированное значение для ключа начального значения хэша.
Изменено в версии 3.7: Этот параметр больше не игнорируется.
Добавлено в версии 3.2.3.
PEP 370 – каталог пакетов сайтов для каждого пользователя
Отключите импорт модуля site и зависимые от сайта манипуляции sys.path , который он влечет за собой. Также отключите эти манипуляции, если site явно импортирован позже (назовите site.main() , если вы хотите, чтобы они были вызваны).
Вытащите потоки stdout и stderr из буфера. Этот параметр не влияет на поток stdin.
Изменено в версии 3.7: Текстовый слой потоков stdout и stderr теперь не буферизован.
Печать сообщения при каждой инициализации модуля с указанием места (имени файла или встроенного модуля), откуда оно загружается. Дважды ( -vv ) распечатайте сообщение для каждого файла, который проверяется при поиске модуля. Также содержит информацию о очистке модуля на выходе. См. также раздел PYTHONVERBOSE .
Предупреждение контроля. Python’s механизм предупреждения по умолчанию печатает предупреждающие сообщения для sys.stderr . Типичное предупреждающее сообщение имеет следующую форму:
file:line: category: message
По умолчанию каждое предупреждение печатается один раз для каждой исходной строки, где оно происходит. Этот параметр управляет частотой печати предупреждений.
Могут быть заданы несколько вариантов -W ; если предупреждение соответствует нескольким опциям, выполняется действие для последнего параметра сопоставления. Недопустимые параметры -W игнорируются (однако при первом выводе предупреждения выводится предупреждающее сообщение о недопустимых параметрах).
Предупреждениями также можно управлять с помощью переменной среды PYTHONWARNINGS и из программы Python с помощью модуля warnings .
Простейшие настройки безоговорочно применяют определенное действие ко всем предупреждениям, выдаваемым процессом (даже к тем, которые по умолчанию игнорируются другими способами):
-Wdefault # Warn once per call location -Werror # Convert to exceptions -Walways # Warn every time -Wmodule # Warn once per calling module -Wonce # Warn once per Python process -Wignore # Never warn
Имена действия могут быть сокращены, как желаемый (например, -Wi , -Wd , -Wa , -We ), и интерпретатор решит их к имени соответствующих мер.
Пропустите первую строку источника, разрешив использование не Unix-форм #!cmd . Это предназначено только для взлома DOS.
Зарезервирован для различных вариантов реализации. CPython в настоящее время определяет следующие возможные значения:
- -X faulthandler для включения faulthandler ;
- -X showrefcount , чтобы произвести полное справочное количество и количество памяти используемый блокирует, когда программа заканчивается или после каждого инструкция в интерактивном интерпретатор. Это работает только для отладочных построений.
- -X tracemalloc , чтобы начать прослеживать отчисления памяти Python, используя модуль tracemalloc . По умолчанию в трейсбэк трассировки сохраняется только самый последний кадр. Используйте -X tracemalloc=NFRAME , чтобы начать прослеживать с пределом трейсбэк структур NFRAME. Дополнительные сведения см. в разделе tracemalloc.start() .
- -X showalloccount для вывода общего количества выделенных объектов для каждого типа по завершении программы. Это только работает, когда Python был построен с определенным COUNT_ALLOCS .
- -X importtime , чтобы показать, сколько времени занимает каждый импорт. Он показывает имя модуля, совокупное время (включая вложенный импорт) и собственное время (исключая вложенный импорт). Следует отметить, что его выход может быть нарушен в многопоточном приложении. Типичное использование — python3 -X importtime -c ‘import asyncio’ . См. такж раздел PYTHONPROFILEIMPORTTIME .
- -X dev : включить «режим разработки» CPython, введя дополнительные проверки среды выполнения, которые слишком дороги для включения по умолчанию. Он не должен быть более подробным, чем значение по умолчанию, если код является правильным: новые предупреждения выдаются только при обнаружении проблемы. Эффект режима разработчика:
- Добавьте фильтр предупреждения default как -W default .
- Установите отладочные хуки на распределители памяти: см. функцию the:c:func: PyMem_SetupDebugHooks C.
- Включите модуль faulthandler для сброса Python трейсбэк в случае сбоя.
- Включите asyncio debug mode .
- Установите dev_mode атрибут sys.flags True .
- io.IOBase деструктор регистрирует исключения close() .
Это также позволяет передавать произвольные значения и извлекать их через словарь sys._xoptions .
Изменено в версии 3.2: Добавлен параметр -X .
Добавлено в версии 3.3: Опция -X faulthandler .
Добавлено в версии 3.4: Параметры -X showrefcount и -X tracemalloc .
Добавлено в версии 3.6: Опция -X showalloccount .
Добавлено в версии 3.7: Опции -X importtime , -X dev и -X utf8 .
Добавлено в версии 3.8: Опция -X pycache_prefix . Опция -X dev теперь регистрирует исключения close() в деструкторе io.IOBase .
1.1.4. Опции, которые вы не должны использовать¶
Зарезервировано для использования Jython.
1.2. Переменные окружения¶
Эти переменные среды влияют на поведение Python’s, они обрабатываются перед переключателями командной строки, отличными от -E или -I. Обычно коммутаторы командной строки переопределяют переменные среды при возникновении конфликта.
Измените расположение стандартных библиотек Python. По умолчанию библиотеки — найденный в prefix /lib/python version и exec_prefix /lib/python version , где prefix и exec_prefix — зависимые от установки справочники, оба невыполнения обязательств к /usr/local .
Когда PYTHONHOME установлен в единственный справочник, его стоимость заменяет и prefix и exec_prefix . Чтобы задать для них различные значения, установите для параметра PYTHONHOME значение prefix : exec_prefix .
Увеличьте путь поиска по умолчанию для файлов модулей. Формат совпадает с форматом PATH оболочки: одно или несколько путей каталога, разделенных os.pathsep (например, двоеточия в Unix или точка с запятой в Windows). Несуществующие каталоги автоматически игнорируются.
В дополнение к обычным каталогам, отдельные записи PYTHONPATH могут относиться к zipfiles, содержащим чистые модули Python (в исходной или скомпилированной форме). Модули расширений нельзя импортировать из zipfiles.
Путь поиска по умолчанию — инсталляционный иждивенец, но обычно начинается с prefix /lib/python version (см. PYTHONHOME выше). Он always добавляется к PYTHONPATH .
Дополнительный каталог будет вставлен в путь поиска перед PYTHONPATH , как описано выше в разделе Интерфейсные опции . Путем поиска можно управлять из программы Python в качестве переменной sys.path .
Если это имя читаемого файла, команды Python в этом файле выполняются перед отображением первого запроса в интерактивном режиме. Файл выполняется в том же пространстве имен, где выполняются интерактивные команды, чтобы объекты, определенные или импортированные в него, могли быть используемый без квалификации в интерактивном сеансе. Также в этом файле можно изменить подсказки sys.ps1 и sys.ps2 и крючок sys.__interactivehook__ .
Вызывает событие аудита cpython.run_startup с именем файла в качестве аргумента при запуске.
Если это установлено в непустой строка, это эквивалентно определению выбора -O . Если задано целое число, оно эквивалентно заданию -O несколько раз.
Если этот параметр установлен, он называет вызываемый объект с помощью нотации с пунктирным контуром. Модуль, содержащий подлежащее выкупу, будет импортирован, и затем подлежащим выкупу будет управлять внедрение по умолчанию sys.breakpointhook() , который самого называет встроенный breakpoint() . Если значение не установлено или установлено в пустую строку, оно эквивалентно значению «pdb.set_trace.» установка этого значения в «0» приводит к тому, что реализация по умолчанию не делает ничего, кроме немедленного возврата.
Добавлено в версии 3.7.
PYTHONDEBUG ¶
Если это установлено в непустой строка, это эквивалентно определению выбора -d . Если задано целое число, оно эквивалентно заданию -d несколько раз.
Если это установлено в непустой строка, это эквивалентно определению выбора -i .
Эта переменная может также быть изменена Python код, используя os.environ , чтобы вызвать, осматривают режим после завершения программы.
Если это установлено в непустой строка, это эквивалентно определению выбора -u .
Если это установлено в непустой строка, это эквивалентно определению выбора -v . Если задано целое число, оно эквивалентно заданию -v несколько раз.
Если этот параметр установлен, Python игнорирует регистр в import инструкции. Это работает только в Windows и OS X.
Если задано значение непустой строки, Python не будет пытаться записывать файлы .pyc при импорте исходных модулей. Это эквивалентно заданию параметра -B .
Если это будет установлено, то Python напишет файлы .pyc в дереве каталогов зеркала на этом пути, вместо в каталогах __pycache__ в исходном дереве. Это эквивалентно заданию параметра -X pycache_prefix=PATH .
Добавлено в версии 3.8.
PYTHONHASHSEED ¶
Если эта переменная не установлена или установлена в random , случайная стоимость — используемый, чтобы отобрать мешанины объектов байтов и ул.
Если для параметра PYTHONHASHSEED установлено целое значение, он используемый как фиксированное начальное значение для генерации хеша () типов, охватываемых рандомизацией хеша.
Его цель — разрешить повторяемое хеширование, например, для selftests для самого интерпретатор, или разрешить кластеру процессов python совместно использовать значения хеширования.
Целое число должно быть десятичным числом в диапазоне [0, 4294967295]. Указание значения 0 отключит рандомизацию хеширования.
Добавлено в версии 3.2.3.
PYTHONIOENCODING ¶
Если этот параметр установлен перед запуском интерпретатора, он переопределяет кодировка используемый для stdin/stdout/stderr в синтаксисе encodingname:errorhandler . И encodingname , и :errorhandler части являются необязательными и имеют то же значение, что и в str.encode() .
Для stderr :errorhandler часть игнорируется; обработчик всегда будет ‘backslashreplace’ .
Изменено в версии 3.4: Теперь encodingname часть является необязательной.
Изменено в версии 3.6: В Windows кодировка, указанная этой переменной, игнорируется для интерактивных буферов консоли, если не указано также PYTHONLEGACYWINDOWSSTDIO . На файлы и пайпы, перенаправленные через стандартные потоки, это не влияет.
PYTHONNOUSERSITE ¶
Если это будет установлено, то Python не добавит user site-packages directory к sys.path .
PEP 370 – каталог пакетов сайтов для каждого пользователя
PYTHONUSERBASE ¶
Определяет user base directory , который является используемый для вычисления пути user site-packages directory и Пути установки Distutils для python setup.py install —user .
PEP 370 – каталог пакетов сайтов для каждого пользователя
PYTHONEXECUTABLE ¶
Если эта переменная окружения будет установлена, то sys.argv[0] будет установлен в свою стоимость вместо стоимости, прошел через время выполнения C. Работает только на Mac OS X.
Это эквивалентно параметру -W . Если задано значение «строка, разделенная запятыми», это эквивалентно заданию -W несколько раз, причем фильтры в дальнейшем в списке имеют приоритет над фильтрами ранее в списке.
Простейшие настройки безоговорочно применяют определенное действие ко всем предупреждениям, выдаваемым процессом (даже к тем, которые по умолчанию игнорируются другими способами):
PYTHONWARNINGS=default # Warn once per call location PYTHONWARNINGS=error # Convert to exceptions PYTHONWARNINGS=always # Warn every time PYTHONWARNINGS=module # Warn once per calling module PYTHONWARNINGS=once # Warn once per Python process PYTHONWARNINGS=ignore # Never warn
Если эта переменная окружения установлена в непустую последовательность, faulthandler.enable() называют при запуске: установить обработчик для SIGSEGV , SIGFPE , SIGABRT , SIGBUS и SIGILL сигнализируют, чтобы свалить Python трейсбэк. Это эквивалентно параметру -X faulthandler .
Добавлено в версии 3.3.
PYTHONTRACEMALLOC ¶
Если эта переменная окружения установлена в непустую последовательность, начните прослеживать отчисления памяти Python, используя модуль tracemalloc . Значение переменной — это максимальное количество кадров, хранящихся в трейсбэк трассировки. Например, PYTHONTRACEMALLOC=1 хранит только самый последний кадр. Дополнительные сведения см. в разделе tracemalloc.start() .
Добавлено в версии 3.4.
PYTHONPROFILEIMPORTTIME ¶
Если для этой переменной среды установлена непустая строка, Python покажет, сколько времени занимает каждый импорт. Это в точности эквивалентно установке -X importtime в командной строке.
Добавлено в версии 3.7.
PYTHONASYNCIODEBUG ¶
Если эта переменная окружения установлена в непустую последовательность, включите debug mode модуля asyncio .
Добавлено в версии 3.4.
PYTHONMALLOC ¶
Установите распределителей памяти Python и/или установите крюки отладки.
Задайте семейство распределителей памяти используемый Python:
- default : использовать default memory allocators .
- malloc : использовать функцию malloc() библиотеки C для всех доменов ( PYMEM_DOMAIN_RAW ,: c:data: PYMEM_DOMAIN_MEM ,:c:data: PYMEM_DOMAIN_OBJ ).
- pymalloc : используйте домены pymalloc allocatorPYMEM_DOMAIN_MEM и PYMEM_DOMAIN_OBJ и используйте функцию malloc() для PYMEM_DOMAIN_RAW домена.
Установите отладочные хуки:
- debug : установить отладочные хуки поверх default memory allocators .
- malloc_debug : то же, что и malloc , но также установите отладочные хуки.
- pymalloc_debug : то же, что и pymalloc , но также установите отладочные хуки.
Посмотрите default memory allocators , и PyMem_SetupDebugHooks() функционировать (установите отладку, зацепляет распределителей памяти Python).
Изменено в версии 3.7: Добавлен распределитель «default» .
Добавлено в версии 3.6.
PYTHONMALLOCSTATS ¶
Если установлено в непустую последовательность, Python напечатает статистику pymalloc memory allocator каждый раз, когда новая арена объекта pymalloc создана и на закрытии.
Эта переменная проигнорирована, если переменная окружения PYTHONMALLOC — используемый, чтобы вынудить the:c:func: malloc лицо, ведающее распределением библиотеки C, или если Python настроен без поддержки pymalloc .
Изменено в версии 3.6: Эта переменная может теперь также быть используемый на Python, собранном в режиме выпуска. Теперь он не действует, если задано пустое строка.
PYTHONLEGACYWINDOWSFSENCODING ¶
Если установлено значение непустой строки, то в режиме файловой системы кодировка и ошибок по умолчанию будут возвращены значения «mbcs» и «replace» соответственно до 3.6. В противном случае новые значения по умолчанию «utf-8» и «суррогатепас» являются используемый.
Это также может быть включено во время выполнения с помощью sys._enablelegacywindowsfsencoding() .
Добавлено в версии 3.6: Дополнительные сведения см. в разделе PEP 529.
PYTHONLEGACYWINDOWSSTDIO ¶
Если установлено значение непустой строки, не использует новое устройство чтения и записи консоли. Это означает, что знаки Unicode будут кодированный согласно активному пульту страница код, вместо того, чтобы использовать utf-8.
Эта переменная игнорируется, если стандартные потоки перенаправляются (в файлы или каналы), а не ссылаются на буферы консоли.
Добавлено в версии 3.6.
PYTHONCOERCECLOCALE ¶
Если установлено в стоимость 0 , вызывает главное заявление командной строки Python пропустить принуждение наследия, основанный на ASCII C и места действия POSIX к более способному UTF-8 основывали альтернативу.
Если эта переменная — набор not (или установлен в стоимость кроме 0 ),, место действия LC_ALL отвергает переменную окружения, также не установлен, и текущее место действия, о котором сообщают для категории LC_CTYPE , является или дефолтом место действия C или иначе явно основанным на ASCII местом действия POSIX , тогда Python CLI попытается настроить следующие места действия для категории LC_CTYPE в заказе, перечисленном прежде, чем загрузить интерпретатор runtime:
Если одна из этих категорий языкового стандарта успешно задана, то переменная среды LC_CTYPE также будет установлена соответствующим образом в текущей среде процесса до инициализации среды выполнения Python. Это гарантирует, что в дополнение к просмотру как самого интерпретатор, так и других языковых компонентов, выполняющихся в одном и том же процессе. (такие как библиотека GNU readline ), обновленная настройка также замечена в подпроцессах (независимо от того, запущены ли эти процессы интерпретатором Python), а также в операциях, которые подвергают сомнению окружающую среду, а не ток C место действия (такое как Python’s владеют locale.getdefaultlocale() ).
Настройка одного из этих языков (явного или неявного принуждения языкового стандарта) автоматически включает surrogateescape error handler для sys.stdin и sys.stdout ( sys.stderr продолжает использовать backslashreplace , как и в любой другой языковой стандарт). Это поведение обработки потока может быть отвергнуто, используя PYTHONIOENCODING , как обычно.
Для отладки целей, устанавливая PYTHONCOERCECLOCALE=warn заставит Python испускать предупреждающие сообщения на stderr , если или принуждение места действия активирует, или иначе если место действия, что would вызвали принуждение, все еще активно, когда время выполнения Python инициализировано.
Также обратите внимание, что, даже когда принуждение места действия отключено, или когда оно не находит подходящее целевое место действия, PYTHONUTF8 все еще активирует по умолчанию в наследии основанные на ASCII места действия. Обе опции должны быть отключены, чтобы вынудить интерпретатор использовать ASCII вместо UTF-8 для системных интерфейсов.
Добавлено в версии 3.7: Дополнительные сведения см. в разделе PEP 538.
PYTHONDEVMODE ¶
Если для этой переменной среды установлена непустая строка, включите CPython «режим разработки». См. параметр -X dev .
Добавлено в версии 3.7.
PYTHONUTF8 ¶
Если установлено в 1 , включает режим переводчика UTF-8, где UTF-8 — используемый как текст кодировка для системных интерфейсов, независимо от текущей настройки места действия.
Это означает что:
- sys.getfilesystemencoding() возвращает ‘UTF-8’ (языковой стандарт кодировка игнорируется).
- locale.getpreferredencoding() возвращает ‘UTF-8’ (языковой стандарт кодировка игнорируется, а параметр do_setlocale функции не действует).
- sys.stdin , sys.stdout и sys.stderr все используют UTF-8 в качестве кодировки текста, с включенными surrogateescape error handler для sys.stdin и sys.stdout ( sys.stderr продолжает использовать backslashreplace , как и в режиме с учетом языкового стандарта по умолчанию)
В результате изменений в этих API более низкого уровня другие API более высокого уровня также демонстрируют другое поведение по умолчанию:
- Аргументы командной строки, переменные среды и имена файлов декодируются в текст с помощью UTF-8 кодировка.
- os.fsdecode() и os.fsencode() используйте UTF-8 Кодировка.
- open() , io.open() и codecs.open() по умолчанию используют UTF-8 кодировка. Тем не менее, они по-прежнему используют строгий обработчик ошибок по умолчанию, так что попытка открыть двоичный файл в текстовом режиме, вероятно, вызовет исключение, а не создаст бредовые данные.
Обратите внимание, что стандартные настройки потока в режиме UTF-8 могут быть переопределены параметром PYTHONIOENCODING (точно так же, как они могут находиться в режиме с учетом языкового стандарта по умолчанию).
Если установлено значение 0 , интерпретатор работает в стандартном режиме с учетом языковых стандартов.
Установка других непустых строка приводит к ошибке во время инициализации интерпретатор.
Если эта переменная окружения не установлена вообще, то дефолты интерпретатор к использованию текущих параметров настройки места действия, unless, текущее место действия идентифицировано как наследие основанное на ASCII место действия (как описано для PYTHONCOERCECLOCALE ), и принуждение места действия, или отключены или терпят неудачу. В таких устаревших местах действия интерпретатор не выполнит своих обязательств к предоставлению возможности режима UTF-8, если явно не проинструктировано не сделать так.
Также доступна в качестве опции -X utf8 .
Добавлено в версии 3.7: Дополнительные сведения см. в разделе PEP 540.
1.2.1. Переменные режима отладки¶
Установка этих переменных влияет только на отладочную сборку Python.
Если этот параметр установлен, Python будет печатать данные отладки многопоточности.
Python потребности, настроенные с —with-pydebug , строят выбор.
Если установлено, Python свалит объекты и справочное количество, все еще живое после закрытия интерпретатор.
Нужно, чтобы Python был настроен с помощью —with-trace-refs опция сборки.
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
Настройка рабочего окружения на Windows для работы с Python
На простом примере рассмотрим, как настроить рабочее окружение для работы с новыми данными, а также как вернуться к рабочему процессу с помощью одного слова.
9.2K открытий
Нам часто приходится сталкиваться с обработкой различных типов данных. Вся обработка осуществляется с помощью языка Python, который позволяет в короткие сроки решать поставленные задачи. Для работы с новым проектом необходимо создавать новое окружение, чтобы избежать проблем с различными версиями пакетов в Python. Рассмотрим пример создания виртуального окружения и его быстрого запуска.
(далее будет информация для начинающих специалистов, если вы уже профессионал — переходите сразу к следующему пункту)
Если у Вас не установлен Python, то скачиваем программу установки и устанавливаем в нужную директорию, не забываем поставить галочку (Add Python X.X to PATH).
Не всегда последняя версия дистрибутива – оптимальное решение, т.к. множество пакетов работает под определенные версии Python. Наиболее распространена версия 3.6.
Чтобы проверить, что Python установился правильно, в командной строке вводим команду — python —version:
Если в результате получаем ошибку о том, что «python не является внутренней или внешней командой…» — необходимо проверить наличие пути в переменных окружения. Проверить это можно в «переменных среды текущего пользователя»:
В данном случае Python установлен в директорию «D:\Work\Python». Если в переменной Path прописаны эти пути, но все равно выскакивает ошибка, то перезагрузите компьютер.
С установкой разобрались, приступим к созданию окружения. Для этого создадим папку для нового проекта и запустим командную строку в новой директории. Для запуска используем команду cmd в строке пути:
В командной строке вводим команду: python -m venv new_proj_env
Где venv – инструмент для создания виртуального окружения, new_proj_env – произвольное имя, которое задали для данного окружения. В результате выполнения в папке с проектом появится новая директория с именем new_proj_env.
Для работы в рамках виртуального окружения, его необходимо активировать с помощью следующей команды: new_proj_env\Scripts\activate
После активации название окружения должно появиться в скобках слева от пути к проекту:
Далее устанавливаем необходимые пакеты, для примера установим pandas и jupyter:
- pip install pandas jupyter – здесь не нужно разделять имена пакетов запятыми,
- pandas – пакет для работы с табличными данными,
- jupyter – пакет для интерактивной работы с данными в браузере с помощью блокнота (jupyter notebook).
Важно отметить, если Вы не установите jupyter для нового окружения, то интерпретатор Python будет подтягивать пакеты из глобального окружения.
Для того, чтобы начать работу, осталось запустить блокнот, командой jupyter notebook:
В результате должен запуститься браузер (по умолчанию), если этого не произошло, то необходимо скопировать адрес, выделенный красным, и вставить в строку поиска браузера. Создадим новый блокнот, импортируем необходимые библиотеки и загрузим данные:
Таким образом, чтобы на следующий день продолжить работу, необходимо:
- Перейти в папку с проектом;
- Активировать виртуальное окружение;
- Запустить jupyter notebook.
Вместо этого, создадим переменную окружения, которая будет выполнять все три пункта разом. Для этого снова зайдем в переменные окружения и создадим новую переменную:
Здесь мы задаем имя переменной, и через оператор «&» обозначаем команды:
- d: — переходим на диск D, т.к. в данном примере папка с проектом лежит на локальном диске D;
- cd D:\Work\New_Projec – переходим к расположению папки с проектом;
- new_proj_env\Scripts\activate – активируем виртуальное окружение;
- jupyter notebook – запускаем блокнот.
Таким образом, чтобы на следующий день продолжить работу, потребуется ввести лишь имя переменной, заключенной в знак «%»:
Ввод осуществляется с любого расположения командной строки.
В результате мы создали виртуальное окружение, а также создали переменную для быстрого доступа к рабочему проекту. Надеюсь, вы нашли для себя что-то новое.
- 3.1. Полная установка