- Урок 3. Установка Python на Windows, Linux, Mac OS
- Содержание
- Установка локальной среды
- Загрузка Python
- Установка Python
- Установка версии для Unix и Linux
- Установка Python на Windows
- Установка версии для Macintosh
- Настройка PATH
- Настройка пути в Unix/Linux
- Настройка пути в Windows
- Переменные среды Python
- Запуск Python
- Интерактивный интерпретатор
- Скрипт из командной строки
- Интегрированная среда разработки
- Переменные среды окружения Python.
- Содержание:
- PYTHONHOME :
- PYTHONPATH :
- PYTHONPLATLIBDIR :
- PYTHONSTARTUP :
- PYTHONOPTIMIZE :
- PYTHONBREAKPOINT :
- PYTHONDEBUG :
- PYTHONOLDPARSER :
- PYTHONINSPECT :
- PYTHONUNBUFFERED :
- PYTHONVERBOSE :
- PYTHONCASEOK :
- PYTHONDONTWRITEBYTECODE :
- PYTHONPYCACHEPREFIX :
- PYTHONHASHSEED :
- PYTHONIOENCODING :
- PYTHONNOUSERSITE :
- PYTHONUSERBASE :
- PYTHONEXECUTABLE :
- PYTHONWARNINGS :
- PYTHONFAULTHANDLER :
- PYTHONTRACEMALLOC :
- PYTHONPROFILEIMPORTTIME :
- PYTHONASYNCIODEBUG :
- PYTHONMALLOC :
- PYTHONMALLOCSTATS :
- PYTHONLEGACYWINDOWSFSENCODING :
- PYTHONLEGACYWINDOWSSTDIO :
- PYTHONCOERCECLOCALE :
- PYTHONDEVMODE :
- PYTHONUTF8 :
- Переменные среды режима отладки.
- PYTHONTHREADDEBUG :
- PYTHONDUMPREFS :
Урок 3. Установка Python на Windows, Linux, Mac OS
Установка Python доступна на самых разных платформах, включая Linux и Mac OS X. Давайте разберемся, как установить среду Python.
Содержание
Установка локальной среды
Откройте окно терминала и введите «python», чтобы узнать, установлен ли он уже и если да, то какая версия установлена.
- Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX и т. д.)
- Windows 9x/NT/2000
- Macintosh (Intel, PPC, 68K)
- OS/2
- DOS (несколько версий)
- PalmOS
- Мобильные телефоны Nokia
- Windows CE
- Acorn/RISC OS
- BeOS
- Amiga
- VMS/OpenVMS
- QNX
- VxWorks
- Psion
- Python также был перенесен на виртуальные машины Java и .NET.
Загрузка Python
Самый последний и актуальный исходный код, двоичные файлы, документация, новости и т. д. доступны на официальном сайте Python https://www.python.org/.
Вы можете загрузить документацию Python, перейдя по адресу https://www.python.org/doc/. Документация доступна в форматах HTML, PDF и PostScript.
Установка Python
Дистрибутив Python доступен для самых разных платформ. Вам необходимо загрузить только двоичный код, подходящий для вашей платформы, и установить Python.
Если двоичный код для вашей платформы недоступен, вам понадобится компилятор C для компиляции исходного кода вручную. Компиляция исходного кода обеспечивает большую гибкость с точки зрения выбора функций, необходимых для вашей установки.
Ниже приведен краткая инструкция по установке Python на различных платформах.
Установка версии для Unix и Linux
Выполните следующие шаги по установке Python на устройстве Unix/Linux.
- Откройте веб-браузер и перейдите по адресу https://www.python.org/downloads/
- Перейдите по ссылке, чтобы загрузить заархивированный исходный код, доступный для Unix/Linux.
- Загрузите и распакуйте файлы.
- Отредактируйте файл Modules/Setup, если вы хотите настроить некоторые параметры.
- Запустите скрипт ./configure
- Выполните
- Выполните установку Python
Python установится в стандартную директорию /usr/local/bin, а его библиотеки в /usr/local/lib/pythonXX, где XX — это версия Python.
Установка Python на Windows
Выполните следующие шаги по установке Python на ОС Windows.
- Откройте веб-браузер и перейдите по адресу https://www.python.org/downloads/
- Перейдите по ссылке на файл python-XYZ.msi установщика Windows, где XYZ — это версия, которую необходимо установить.
- Чтобы использовать этот установщик python-XYZ.msi, система Windows должна поддерживать Microsoft Installer 2.0. Сохраните файл установщика на компьютере, а затем запустите его, чтобы узнать, поддерживает ли ваш компьютер MSI.
- Запустите скачанный файл, после чего откроется мастер установки и настройки Python, который делает процесс установки максимально простым. Просто примите настройки по умолчанию и дождитесь завершения установки.
Установка версии для Macintosh
Последние Mac поставляются с установленным Python, но его версия может быть устаревшей. Смотрите инструкции по получению текущей версии вместе с дополнительными инструментами для поддержки разработки на Mac на странице http://www.python.org/download/mac/. Для версий Mac OS до Mac OS X 10.3 (выпущенных в 2003 году) доступен MacPython.
Он поддерживается Джеком Янсеном, и вы можете получить полный доступ ко всей документации на его веб-сайте — http://www.cwi.nl/
jack/macpython.html. Также там вы можете получить полную информацию об установке версии для Mac OS.
Настройка PATH
Программы и другие исполняемые файлы могут находиться во многих каталогах, поэтому операционные системы предоставляют путь поиска, в котором перечислены каталоги, в которых ОС ищет исполняемые файлы.
Путь хранится в переменной среде, которая представляет собой именованную строку, поддержива емую операционной системой. Эта переменная содержит информацию, доступную для командной оболочки и других программ.
Переменная пути называется PATH в Unix или Path в Windows (Unix чувствителен к регистру; Windows — нет).
В Mac OS установщик обрабатывает сведения о пути. Чтобы вызвать интерпретатор Python из любого конкретного каталога, вы должны добавить каталог Python в свой путь.
Настройка пути в Unix/Linux
Чтобы добавить директорию Python к пути для определенного сеанса в Unix:
- В командной оболочке csh введите setenv PATH «$PATH:/usr/local/bin/python» и нажмите Enter.
- В командной оболочке bash (Linux) введите export PATH=»$PATH:/usr/local/bin/python» и нажмите Enter.
- В командной оболочке sh или ksh введите PATH=»$PATH:/usr/local/bin/python» и нажмите Enter.
- Примечание: /usr/local/bin/python — это путь к каталогу Python.
Настройка пути в Windows
Чтобы добавить каталог Python к пути для определенного сеанса в Windows:
В командной строке введите path %path%;C:\Python и нажмите Enter.
Примечание: C:\Python — это путь к каталогу Python.
Переменные среды Python
В таблице приведены важные переменные среды, которые может распознавать Python:
№ п/п | Переменная и описание |
1 | PYTHONPATH Роль данной переменной аналогична PATH. Эта переменная сообщает интерпретатору Python, где найти файлы модуля, импортированные в программу. Переменная должна включать каталог исходной библиотеки Python и каталоги, содержащие исходный код Python. PYTHONPATH иногда задается установщиком Python. |
2 | PYTHONSTARTUP Содержит путь к файлу инициализации, содержащему исходный код Python. Выполняется каждый раз при запуске интерпретатора. В Unix называется .pythonrc.py и содержит команды, которые загружают утилиты или изменяют PYTHONPATH. |
3 | PYTHONCASEOK Используется в Windows, чтобы указать Python найти первое совпадение без учета регистра в операторе импорта. Задайте для этой переменной любое значение, чтобы активировать ее. |
4 | PYTHONHOME Это альтернативный путь поиска модуля. Обычно встраивается в каталоги PYTHONSTARTUP или PYTHONPATH для упрощения переключения библиотек модулей. |
Запуск Python
Есть три разных способа запуска Python.
Интерактивный интерпретатор
Вы можете запустить Python из Unix, DOS или любой другой системы, которая предоставляет вам интерпретатор командной строки или командное окно.
Введите python в командной строке.
Начните писать код прямо в интерактивном интерпретаторе.
В таблице приведен список всех доступных параметров командной строки:
№ п/п | Опции и описание |
1 | -d Обеспечивает вывод отладки. |
2 | -O Генерирует оптимизированный байт-код (в результате создаются файлы .pyo). |
3 | -S Не запускает импорт местоположения для поиска путей Python при запуске. |
4 | -v Подробный вывод (подробная трассировка операторов импорта). |
5 | -X Отключает встроенные исключения на основе классов (используйте только строки); устарело, начиная с версии 1.6. |
6 | -c cmd Запускает скрипт Python, отправленный в качестве строки cmd |
7 | file Запускает скрипт Python из заданного файла |
Скрипт из командной строки
Сценарий Python может быть выполнен из командной строки, вызвав интерпретатор в вашем приложении, как показано ниже:
Примечание: убедитесь, что режим разрешений для файла позволяет выполнение.
Интегрированная среда разработки
Вы также можете запустить Python из среды графического интерфейса пользователя (GUI), если в вашей системе установлено приложение с графическим интерфейсом, которое поддерживает Python.
- Unix — IDLE является первой Unix IDE для Python.
- Windows — PythonWin является первым интерфейсом Windows для Python, представляющий собой IDE с графическим интерфейсом.
- Macintosh — версия Python для Macintosh вместе с IDLE IDE доступна с основного веб-сайта и может быть загружена в виде файлов MacBinary или BinHex’d.
Если вы не можете правильно настроить среду, обратитесь за помощью к системному администратору. Убедитесь, что среда Python правильно настроена и работает нормально.
Примечание: все примеры, приведенные в последующих главах, выполняются с версией Python 2.4.3, доступной в версии CentOS Linux.
Мы провели настройку окружения онлайн-среды программирования Python, так что вы можете выполнять все доступные примеры онлайн одновременно, когда изучаете теорию. Не стесняйтесь изменять любой пример и выполнять его онлайн.
Переменные среды окружения Python.
В разделе описанные переменные среды влияют на поведение Python, они обрабатываются перед параметрами/флагами командной строки, отличными от -E или -I . Обычно в случае конфликта параметры командной строки переопределяют переменные окружения.
Содержание:
- PYTHONHOME изменяет расположение стандартных библиотек Python,
- PYTHONPATH изменяет путь поиска модулей по умолчанию,
- PYTHONPLATLIBDIR переопределяет значение sys.platlibdir ,
- PYTHONSTARTUP имя файла, выполняемого перед стартом интерпретатора,
- PYTHONOPTIMIZE — эквивалент параметра интерпретатора -O ,
- PYTHONBREAKPOINT — включение/отключение отладчика отладчик pdb ,
- PYTHONDEBUG — эквивалент указания опции интерпретатора -d ,
- PYTHONOLDPARSER включает традиционный анализатор LL ,
- PYTHONINSPECT — эквивалент указания параметра интерпретатора -i ,
- PYTHONUNBUFFERED — эквивалент указания параметра интерпретатора -u ,
- PYTHONVERBOSE — эквивалент указания параметра интерпретатора -v ,
- PYTHONCASEOK — игнорирует регистр символов в операторах импорта,
- PYTHONDONTWRITEBYTECODE — Python не будет пытаться писать файлы .pyc ,
- PYTHONPYCACHEPREFIX Python будет писать файлы .pyc в зеркальном дереве каталогов,
- PYTHONHASHSEED используется для заполнения хэшей объектов str и bytes ,
- PYTHONIOENCODING переопределяет кодировку, используемую для stdin / stdout / stderr ,
- PYTHONNOUSERSITE — не добавляется пользовательский каталог site-packages в переменную sys.path,
- PYTHONUSERBASE определяет базовый каталог пользователя,
- PYTHONEXECUTABLE установка значения для sys.argv[0] ,
- PYTHONWARNINGS — эквивалент указания параметра интерпретатора -W ,
- PYTHONFAULTHANDLER — эквивалент опции обработчика ошибок -X ,
- PYTHONTRACEMALLOC отслеживание выделения памяти Python,
- PYTHONPROFILEIMPORTTIME покажет, сколько времени занимает импорт модулей,
- PYTHONASYNCIODEBUG включает режим отладки модуля asyncio ,
- PYTHONMALLOC задает распределители памяти Python и/или устанавливает отладочные хуки,
- PYTHONMALLOCSTATS печатает статистику распределителя памяти,
- PYTHONLEGACYWINDOWSFSENCODING возвращает кодировку к своим значениям,
- PYTHONLEGACYWINDOWSSTDIO — использование новых средства чтения и записи консоли,
- PYTHONCOERCECLOCALE пропускает приведение устаревших локалей к UTF-8 ,
- PYTHONDEVMODE включает режим разработки Python,
- PYTHONUTF8 включает режим интерпретатора UTF-8 ,
- PYTHONTHREADDEBUG печатает отладочную информацию о потоках,
- PYTHONDUMPREFS сбрасывает объекты и счетчики ссылок.
PYTHONHOME :
Переменная среды PYTHONHOME изменяет расположение стандартных библиотек Python. По умолчанию библиотеки ищутся в prefix/lib/pythonversion и exec_prefix/lib/pythonversion , где prefix и exec_prefix — это каталоги, зависящие от установки, оба каталога по умолчанию — /usr/local .
Когда для PYTHONHOME задан один каталог, его значение заменяет prefix и exec_prefix . Чтобы указать для них разные значения, установите для PYTHONHOME значение prefix:exec_prefix .
PYTHONPATH :
Переменная среды PYTHONPATH изменяет путь поиска по умолчанию для файлов модуля. Формат такой же, как для оболочки PATH : один или несколько путей к каталогам, разделенных os.pathsep (например, двоеточие в Unix или точка с запятой в Windows). Несуществующие каталоги игнорируются.
Помимо обычных каталогов, отдельные записи PYTHONPATH могут относиться к zip-файлам, содержащим чистые модули Python в исходной или скомпилированной форме. Модули расширения нельзя импортировать из zip-файлов.
Путь поиска по умолчанию зависит от установки Python, но обычно начинается с префикса /lib/pythonversion (см. PYTHONHOME ). Он всегда добавляется к PYTHONPATH .
Дополнительный каталог будет вставлен в путь поиска перед PYTHONPATH , как описано в разделе «Варианты интерфейса командной строки Python». Путь поиска можно изменить из программы Python с помощью переменной sys.path .
PYTHONPLATLIBDIR :
Если в переменную PYTHONPLATLIBDIR установлена непустая строка, то она переопределяет значение sys.platlibdir .
Новое в Python 3.9.
PYTHONSTARTUP :
Если переменная среды PYTHONSTARTUP` это имя файла, то команды Python в этом файле выполняются до отображения первого приглашения в интерактивном режиме. Файл выполняется в том же пространстве имен, в котором выполняются интерактивные команды, так что определенные или импортированные в нем объекты можно использовать без квалификации в интерактивном сеансе.
При запуске вызывает событие аудита cpython.run_startup с именем файла в качестве аргумента.
PYTHONOPTIMIZE :
Если в переменной среды PYTHONOPTIMIZE задана непустая строка, это эквивалентно указанию параметра -O . Если установлено целое число, то это эквивалентно указанию -ОO .
PYTHONBREAKPOINT :
Если переменная среды PYTHONBREAKPOINT установлена, то она определяет вызываемый объект с помощью точечной нотации. Модуль, содержащий вызываемый объект, будет импортирован, а затем вызываемый объект будет запущен реализацией по умолчанию sys.breakpointhook() , которая сама вызывается встроенной функцией breakpoint() . Если PYTHONBREAKPOINT не задан или установлен в пустую строку, то это эквивалентно значению pdb.set_trace . Установка этого значения в строку 0 приводит к тому, что стандартная реализация sys.breakpointhook() ничего не делает, кроме немедленного возврата.
Новое в Python 3.7.
PYTHONDEBUG :
Если значение переменной среды PYTHONDEBUG непустая строка, то это эквивалентно указанию опции -d . Если установлено целое число, то это эквивалентно многократному указанию -dd .
PYTHONOLDPARSER :
Если значение переменной среды PYTHONOLDPARSER непустая строка, то включается традиционный анализатор LL (старый парсер).
Не рекомендуется с Python 3.9, будет удалено в Python 3.10.
PYTHONINSPECT :
Если значение переменной среды PYTHONINSPECT непустая строка, то это эквивалентно указанию параметра -i .
Эта переменная также может быть изменена кодом Python с помощью os.environ для принудительного режима проверки при завершении программы.
PYTHONUNBUFFERED :
Если значение переменной среды PYTHONUNBUFFERED непустая строка, то это эквивалентно указанию параметра -u .
PYTHONVERBOSE :
Если значение переменной среды PYTHONVERBOSE непустая строка, то это эквивалентно указанию опции -v . Если установлено целое число, это эквивалентно многократному указанию -v .
PYTHONCASEOK :
Если значение переменной среды PYTHONCASEOK установлено, то Python игнорирует регистр символов в операторах импорта. Это работает только в Windows и OS X.
PYTHONDONTWRITEBYTECODE :
Если значение переменной среды PYTHONDONTWRITEBYTECODE непустая строка, то Python не будет пытаться писать файлы .pyc при импорте исходных модулей. Это эквивалентно указанию параметра -B .
PYTHONPYCACHEPREFIX :
Если значение переменной среды PYTHONPYCACHEPREFIX установлено, то Python будет записывать файлы .pyc в зеркальном дереве каталогов по этому пути, а не в каталогах __pycache__ в исходном дереве. Это эквивалентно указанию параметра -X pycache_prefix=PATH .
Новое в Python 3.8.
PYTHONHASHSEED :
Если значение переменной среды PYTHONHASHSEED не установлено или имеет значение random , то случайное значение используется для заполнения хэшей объектов str и bytes .
Если для PYTHONHASHSEED задано целочисленное значение, то оно используется как фиксированное начальное число для генерации hash() типов, охватываемых рандомизацией хэша.
Цель — разрешить повторяемое хеширование, например, для самотестирования самого интерпретатора, или позволить кластеру процессов Python совместно использовать хеш-значения.
Целое число должно быть десятичным числом в диапазоне [0,4294967295]. Указание значения 0 отключит рандомизацию хэша.
PYTHONIOENCODING :
Если значение переменной среды PYTHONIOENCODING установлено до запуска интерпретатора, то оно переопределяет кодировку, используемую для stdin / stdout / stderr , в синтаксисе encodingname:errorhandler . И имя кодировки encodingname , и части :errorhandler являются необязательными и имеют то же значение, что и в функции str.encode() .
Для stderr часть :errorhandler игнорируется, а обработчик всегда будет заменять обратную косую черту.
Изменено в версии 3.6: в Windows кодировка, указанная этой переменной, игнорируется для буферов интерактивной консоли, если также не указан PYTHONLEGACYWINDOWSSTDIO . Файлы и каналы, перенаправленные через стандартные потоки, не затрагиваются.
PYTHONNOUSERSITE :
Если значение переменной среды PYTHONNOUSERSITE установлено, то Python не будет добавлять пользовательский каталог site-packages в переменную sys.path .
PYTHONUSERBASE :
Переменная среды PYTHONUSERBASE определяет базовый каталог пользователя, который используется для вычисления пути к каталогу пользовательских пакетов сайта site-packages и путей установки Distutils для python setup.py install —user .
PYTHONEXECUTABLE :
Если значение переменной среды PYTHONEXECUTABLE установлено, то для sys.argv[0] будет установлено ее значение вместо значения, полученного через среду выполнения C . Работает только в Mac OS X.
PYTHONWARNINGS :
Переменная среды PYTHONWARNINGS эквивалентна опции -W . Если она установлена в виде строки, разделенной запятыми, то это эквивалентно многократному указанию -W , при этом фильтры, расположенные позже в списке, имеют приоритет над фильтрами ранее в списке.
В простейших настройках определенное действие безоговорочно применяется ко всем предупреждениям, выдаваемым процессом (даже к тем, которые по умолчанию игнорируются):
- PYTHONWARNINGS=default # Предупреждать один раз для каждого вызова
- PYTHONWARNINGS=error # Преобразовать в исключения
- PYTHONWARNINGS=always # Предупреждать каждый раз
- PYTHONWARNINGS=module # Предупреждать один раз для каждого вызванного модуля
- PYTHONWARNINGS=once # Предупреждать один раз для каждого процесса Python
- PYTHONWARNINGS=ignore # Никогда не предупреждать
PYTHONFAULTHANDLER :
Если значение переменной среды PYTHONFAULTHANDLER непустая строка, то при запуске вызывается faulthandler.enable() : устанавливается обработчик сигналов SIGSEGV , SIGFPE , SIGABRT , SIGBUS и SIGILL , чтобы вывести данные трассировки Python. Это эквивалентно опции обработчика ошибок -X .
PYTHONTRACEMALLOC :
Если значение переменной среды PYTHONTRACEMALLOC непустая строка, то начнется отслеживание выделения памяти Python с помощью модуля tracemalloc . Значение переменной — это максимальное количество кадров, хранящихся в обратной трассировке trace . Например, PYTHONTRACEMALLOC=1 сохраняет только самый последний кадр.
PYTHONPROFILEIMPORTTIME :
Если значение переменной среды PYTHONPROFILEIMPORTTIME непустая строка, то Python покажет, сколько времени занимает каждый импорт. Это в точности эквивалентно установке -X importtime в командной строке.
Новое в Python 3.7.
PYTHONASYNCIODEBUG :
Если значение переменной среды PYTHONASYNCIODEBUG непустая строка, то включается режим отладки модуля asyncio .
PYTHONMALLOC :
Переменная PYTHONMALLOC задает распределители памяти Python и/или устанавливает отладочные хуки.
Задает семейство распределителей памяти, используемых Python:
- default : использует распределители памяти по умолчанию.
- malloc : использует функцию malloc() библиотеки C для всех доменов ( PYMEM_DOMAIN_RAW , PYMEM_DOMAIN_MEM , PYMEM_DOMAIN_OBJ ).
- pymalloc : использует распределитель pymalloc для доменов PYMEM_DOMAIN_MEM и PYMEM_DOMAIN_OBJ и использует функцию malloc() для домена PYMEM_DOMAIN_RAW .
Устанавливает хуки отладки:
- debug : устанавливает хуки отладки поверх распределителей памяти по умолчанию.
- malloc_debug : то же, что и malloc , но также устанавливает отладочные хуки.
- pymalloc_debug : то же, что и pymalloc , но также устанавливает отладочные хуки.
См. Распределители памяти по умолчанию и функцию PyMem_SetupDebugHooks () (установите отладочные хуки на распределителях памяти Python).
Изменено в Python 3.7: Добавлен распределитель по умолчанию default .
Новое в Python 3.6.
PYTHONMALLOCSTATS :
Если значение переменной среды PYTHONMALLOCSTATS непустая строка, то Python будет печатать статистику распределителя памяти pymalloc каждый раз, когда создается новая область объекта pymalloc , а также при завершении работы.
Эта переменная игнорируется, если переменная среды PYTHONMALLOC используется для принудительного использования распределителя malloc() библиотеки C или если Python настроен без поддержки pymalloc .
Изменено в Python 3.6: эту переменную теперь также можно использовать в Python, скомпилированном в режиме релиза. Теперь она не действует, если задана пустая строка.
PYTHONLEGACYWINDOWSFSENCODING :
Если значение переменной среда Python PYTHONLEGACYWINDOWSFSENCODING непустая строка, то кодировка файловой системы по умолчанию и режим ошибок вернутся к своим значениям mbcs и replace до версии Python 3.6 соответственно. В противном случае используются новые значения по умолчанию utf-8 и surrogatepass .
Это также можно включить во время выполнения с помощью sys._enablelegacywindowsfsencoding() .
PYTHONLEGACYWINDOWSSTDIO :
Если значение переменной среды PYTHONLEGACYWINDOWSSTDIO непустая строка, то новые средства чтения и записи консоли не используются. Это означает, что символы Unicode будут закодированы в соответствии с активной кодовой страницей консоли, а не с использованием utf-8 .
Эта переменная игнорируется, если стандартные потоки перенаправляются в файлы или каналы, а не ссылаются на буферы консоли.
Новое в Python 3.6.
PYTHONCOERCECLOCALE :
Если значение переменной среды PYTHONCOERCECLOCALE установлено в значение 0 , то это заставит основное приложение командной строки Python пропускать приведение устаревших локалей C и POSIX на основе ASCII к более функциональной альтернативе на основе UTF-8 .
Если эта переменная не установлена или имеет значение, отличное от 0 , то переменная среды переопределения локали LC_ALL также не задана, а текущая локаль, указанная для категории LC_CTYPE , является либо локалью C по умолчанию, либо локалью POSIX явно основанной на ASCII , то Python CLI попытается настроить следующие локали для категории LC_CTYPE в порядке, указанном перед загрузкой среды выполнения интерпретатора:
Если установка одной из этих категорий локали прошла успешно, то переменная среды LC_CTYPE также будет установлена соответствующим образом в текущей среде процесса до инициализации среды выполнения Python. Это гарантирует, что обновленный параметр будет виден как самому интерпретатору, так и другим компонентам, зависящим от локали, работающим в одном процессе (например, библиотеке GNU readline ), и в субпроцессах (независимо от того, работают ли эти процессы на интерпретаторе Python или нет), а также в операциях, которые запрашивают среду, а не текущую локаль C (например, собственный locale.getdefaultlocale() Python).
Настройка одного из этих языковых стандартов явно или с помощью указанного выше неявного принуждения языкового стандарта автоматически включает обработчик ошибок surrogateescape для sys.stdin и sys.stdout ( sys.stderr продолжает использовать обратную косую черту, как и в любой другой локали). Это поведение обработки потока можно переопределить, используя PYTHONIOENCODING , как обычно.
Для целей отладки, установка PYTHONCOERCECLOCALE=warn приведет к тому, что Python будет выдавать предупреждающие сообщения на stderr , если активируется принуждение языкового стандарта или если языковой стандарт, который мог бы вызвать приведение, все еще активен при инициализации среды выполнения Python.
Также обратите внимание, что даже когда принуждение языкового стандарта отключено или когда не удается найти подходящую целевую локаль, переменная среды PYTHONUTF8 все равно будет активироваться по умолчанию в устаревших локалях на основе ASCII . Чтобы для системных интерфейсов интерпретатор использовал ASCII вместо UTF-8 , необходимо обе переменные отключить.
Доступность: *nix системы.
Новое в версии 3.7
PYTHONDEVMODE :
Если значение переменной среды PYTHONDEVMODE непустая строка, то включится режим разработки Python, введя дополнительные проверки времени выполнения, которые слишком «дороги» для включения по умолчанию.
Новое в версии 3.7
PYTHONUTF8 :
Если переменная среды 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 включен для sys.stdin и sys.stdout ( sys.stderr продолжает использовать обратную косую черту, как и в режим с учетом локали по умолчанию)
В результате изменений в этих API нижнего уровня, другие API более высокого уровня также демонстрируют другое поведение по умолчанию:
- Аргументы командной строки, переменные среды и имена файлов декодируются в текст с использованием кодировки UTF-8 .
- os.fsdecode() и os.fsencode() используют кодировку UTF-8 .
- open() , io.open() и codecs.open() по умолчанию используют кодировку UTF-8 . Однако они по-прежнему используют обработчик ошибок strict по умолчанию, так что попытка открыть двоичный файл в текстовом режиме может вызвать исключение, а не создавать бессмысленные данные.
Обратите внимание, что стандартные настройки потока в режиме UTF-8 могут быть отменены с помощью PYTHONIOENCODING так же, как они могут быть в режиме с учетом локали по умолчанию.
Если установлено значение 0 , то интерпретатор работает в режиме с учетом локали по умолчанию.
Установка любой другой непустой строки вызывает ошибку при инициализации интерпретатора.
Если переменная среды PYTHONUTF8 вообще не задана, то интерпретатор по умолчанию использует текущие настройки локали, если только текущая локаль не определена как устаревшая локаль на основе ASCII (как описано для PYTHONCOERCECLOCALE ), и принуждение локали отключено или не работает. В таких устаревших региональных стандартах интерпретатор по умолчанию будет включать режим UTF-8 , если явно не указано иное.
Установка переменной среды PYTHONUTF8 также доступна как опция интерпретатора -X utf8 .
Новое в версии 3.7
Переменные среды режима отладки.
Установка этих переменных влияет только на отладочную сборку Python.
PYTHONTHREADDEBUG :
Если значение переменной среды PYTHONTHREADDEBUG установлено, то Python распечатает отладочную информацию о потоках.
Нужен Python, настроенный с параметром сборки —with-pydebug .
PYTHONDUMPREFS :
Если значение переменной среды PYTHONDUMPREFS установлено, то Python будет сбрасывать объекты и счетчики ссылок, все еще живые после завершения работы интерпретатора.
Нужен Python, настроенный с параметром сборки —with-trace-refs .