Использование Python в macOS
В этом документе представлен обзор особенностей macOS, которые важно знать, чтобы начать работать с Python на компьютерах Mac. Python на Mac под управлением macOS очень похож на Python на других платформах, производных от Unix, однако есть некоторые различия в установке и некоторые особенности.
Существует несколько способов получить и установить Python для macOS. Предварительно собранные версии последних выпусков Python доступны у ряда дистрибьюторов. В этом документе в основном описывается использование версий Python, предоставляемых командой выпуска CPython для загрузки с сайта python.org. Другие варианты см. в разделе Альтернативные дистрибутивы.
5.1. Использование Python для macOS с python.org
5.1.1. Этапы установки
Для текущих версий Python (кроме версий со статусом security) команда выпуска готовит установочный пакет Python для macOS для каждого нового выпуска. Список доступных установщиков приведён здесь. По возможности мы рекомендуем использовать последнюю поддерживаемую версию Python. Текущие установщики содержат сборку Python с универсальным двоичным файлом universal2, которая работает нативно на всех Mac (Apple Silicon и Intel), поддерживаемых широким диапазоном версий macOS, обычно начиная как минимум с macOS 10.15 Catalina.
Загруженный файл представляет собой стандартный установочный пакет macOS (.pkg). Информация о целостности файла (контрольная сумма, размер, подпись sigstore и т. д.) приводится для каждого файла на странице загрузки выпуска. Установочные пакеты и их содержимое подписаны и нотариально заверены сертификатами Apple Developer ID Python Software Foundation в соответствии с требованиями macOS Gatekeeper.
Для установки с настройками по умолчанию дважды щёлкните загруженный установочный пакет. Должно запуститься стандартное приложение macOS Installer и отобразиться первое из нескольких окон установщика.
Нажмите кнопку Продолжить, чтобы открыть файл Read Me для этого установщика. Помимо другой важной информации, в файле Read Me указано, какая версия Python будет установлена и какие версии macOS она поддерживает. Возможно, потребуется прокрутить документ, чтобы прочитать его целиком. По умолчанию этот файл Read Me также устанавливается в /Applications/Python 3.14/ и доступен для чтения в любое время.
Нажмите Продолжить, чтобы перейти к лицензии Python и другого включённого программного обеспечения. Перед переходом к следующему этапу необходимо Принять условия лицензии. Этот файл лицензии также будет установлен и останется доступным для последующего чтения.
После принятия условий лицензии появится экран Тип установки. Для большинства задач подходит стандартный набор операций установки.
Нажав кнопку Настроить, можно исключить или выбрать отдельные компоненты установочного пакета. Чтобы увидеть описание устанавливаемого компонента, щёлкните его название. Чтобы установить поддержку дополнительной необязательной функции свободнопоточного режима, см. раздел Установка свободнопоточных двоичных файлов.
В обоих случаях нажатие кнопки Установить запустит процесс установки и запросит разрешение на установку нового программного обеспечения. Для этого необходима учётная запись macOS с привилегией Administrator, поскольку установленный Python будет доступен всем пользователям Mac.
По завершении установки появится окно Сводка.
Дважды щёлкните значок или файл Install Certificates.command в окне /Applications/Python 3.14/, чтобы завершить установку.
Откроется временное окно оболочки Terminal, в котором новая версия Python загрузит и установит корневые SSL-сертификаты для своего использования.
Если в окне терминала появится Successfully installed certifi и update complete, установка завершена. Закройте это окно терминала и окно установщика.
При установке по умолчанию будут добавлены:
- Папка
Python 3.14в папкеApplications. В ней находятся IDLE — среда разработки, входящая в стандартные официальные дистрибутивы Python, — и Python Launcher, который обрабатывает запуск скриптов Python двойным щелчком в приложении macOS Finder. - Фреймворк
/Library/Frameworks/Python.framework, содержащий исполняемый файл Python и библиотеки. Установщик добавляет этот путь в системную переменную PATH оболочки. Чтобы удалить Python, можно удалить эти три элемента. Символические ссылки на исполняемый файл Python размещаются в/usr/local/bin/.
Примечание
В последних версиях macOS есть команда python3 в /usr/bin/python3, которая ссылается на обычно более старую и неполную версию Python, предоставляемую Apple для использования средствами разработки Apple — Xcode или Command Line Tools for Xcode. Не следует изменять или пытаться удалить эту установку: она контролируется Apple и используется программным обеспечением Apple или сторонних разработчиков. Если вы установите более новую версию Python из python.org, на вашем компьютере будут две разные, но работоспособные установки Python, которые могут сосуществовать. Настройки установщика по умолчанию должны обеспечить использование его команды python3 вместо системной команды python3.
5.1.2. Как запустить скрипт Python
Интерпретатор Python можно запустить двумя способами. Если вы умеете пользоваться оболочкой Unix в окне терминала, можно вызвать python3.14 или python3, при необходимости добавив один или несколько параметров командной строки (описанных в разделе Командная строка и окружение). В учебнике Python также есть полезный раздел о интерактивном использовании Python из оболочки.
Также можно запустить интерпретатор из интегрированной среды разработки. IDLE — редактор Python и оболочка — это простой редактор и среда интерпретатора, входящая в стандартный дистрибутив Python. В IDLE есть меню справки, через которое можно получить доступ к документации Python. Если вы только начинаете изучать Python, в этом документе можно прочитать вводную часть учебника.
Доступно множество других редакторов и IDE; дополнительную информацию см. в разделе Редакторы и IDE.
Чтобы запустить файл скрипта Python из окна терминала, вызовите интерпретатор, указав имя файла скрипта:
python3.14 myscript.py
Чтобы запустить скрипт из Finder, можно:
- Перетащить его на Python Launcher.
- Выбрать Python Launcher в качестве приложения по умолчанию для открытия скрипта (или любого скрипта
.py) через окно сведений Finder и дважды щёлкнуть по нему. В Python Launcher есть различные настройки, управляющие запуском скрипта. Удерживая Option, можно перетащить скрипт, чтобы изменить эти настройки для одного запуска, либо воспользоваться менюPreferences, чтобы изменить их глобально.
Имейте в виду, что запуск скрипта непосредственно из Finder в macOS может привести к результатам, отличающимся от запуска из окна терминала: скрипт не будет выполняться в обычном окружении оболочки, в том числе с переменными окружения, заданными в профилях оболочки. И, как и при запуске любого другого скрипта или программы, убедитесь, что знаете, что именно собираетесь запустить.
5.2. Альтернативные дистрибутивы
Помимо стандартного установщика python.org для macOS, существуют сторонние дистрибутивы macOS, которые могут включать дополнительные возможности. Некоторые популярные дистрибутивы и их основные особенности:
- ActivePython
-
Установщик с поддержкой нескольких платформ и документацией
- Anaconda
-
Популярные научные модули (например, numpy, scipy и pandas) и менеджер пакетов
conda. - Homebrew
-
Менеджер пакетов для macOS, включающий несколько версий Python и множество сторонних пакетов на основе Python (в том числе numpy, scipy и pandas).
- MacPorts
-
Ещё один менеджер пакетов для macOS, включающий несколько версий Python и множество сторонних пакетов на основе Python. Может содержать предварительно собранные версии Python и множество пакетов для старых версий macOS.
Обратите внимание, что дистрибутивы могут не включать последние версии Python или других библиотек и не обслуживаются и не поддерживаются основной командой Python.
5.3. Установка дополнительных пакетов Python
Дополнительную информацию см. в руководстве пользователя по упаковке Python.
5.4. Разработка графических интерфейсов
Для создания приложений с графическим интерфейсом на Mac с помощью Python доступно несколько вариантов.
Стандартный инструментарий Python для создания графических интерфейсов — tkinter, основанный на кроссплатформенном инструментарии Tk (https://www.tcl.tk). Версия Tk для macOS включена в установщик.
PyObjC — это привязка Python к фреймворку Apple Objective-C/Cocoa. Информация о PyObjC доступна на странице pyobjc.
Доступны и другие инструментарии для создания графических интерфейсов macOS, в том числе:
- PySide: официальные привязки Python к инструментарию графического интерфейса Qt.
- PyQt: альтернативные привязки Python к Qt.
- Kivy: кроссплатформенный инструментарий графического интерфейса для настольных и мобильных платформ.
- Toga: часть проекта BeeWare; поддерживает настольные и мобильные приложения, веб-приложения и консольные приложения.
- wxPython: кроссплатформенный инструментарий для настольных операционных систем.
5.5. Дополнительные темы
5.5.1. Установка свободнопоточных двоичных файлов
Добавлено в версии 3.13.
Установочный пакет python.org Python для macOS может дополнительно установить сборку Python 3.14 с поддержкой PEP 703, функции свободнопоточного режима (работающей с отключённой глобальной блокировкой интерпретатора). Проверьте страницу выпуска на python.org, чтобы узнать о возможных обновлениях.
Свободнопоточный режим работает и продолжает совершенствоваться, однако при однопоточных нагрузках он создаёт дополнительные накладные расходы по сравнению с обычной сборкой. Кроме того, сторонние пакеты, особенно содержащие модуль расширения, могут быть не готовы к использованию в свободнопоточной сборке и повторно включить GIL. Поэтому поддержка свободнопоточности не устанавливается по умолчанию. Она поставляется как отдельный вариант установки, доступный при нажатии кнопки Настроить на этапе Тип установки установщика, как описано выше.
Если установить флажок рядом с названием пакета Свободнопоточный Python, отдельно от обычного Python.framework в /Library/Frameworks будет установлен PythonT.framework. Такая конфигурация позволяет безопасно установить или протестировать свободнопоточную сборку Python 3.14 одновременно с традиционной сборкой Python 3.14 (только с GIL). В будущих выпусках структура установки может измениться.
Известные предостережения и ограничения:
- Пакет Инструменты командной строки UNIX, выбранный по умолчанию, устанавливает в
/usr/local/binссылки дляpython3.14t— свободнопоточного интерпретатора — иpython3.14t-config— утилиты настройки, которая может быть полезна сборщикам пакетов. Поскольку/usr/local/binобычно включён в оболочкуPATH, в большинстве случаев для использованияpython3.14tне требуется изменять переменные окруженияPATH. - В этом выпуске пакет Обновление профиля оболочки и
Update Shell Profile.commandв/Applications/Python 3.14/не поддерживают свободнопоточный пакет. -
Свободнопоточная и традиционная сборки используют отдельные пути поиска и отдельные каталоги
site-packages, поэтому, если пакет нужен в обеих сборках, по умолчанию может потребоваться установить его в каждую из них. Свободнопоточный пакет установит отдельный экземпляр pip для использования сpython3.14t.-
Чтобы установить пакет с помощью pip без venv:
python3.14t -m pip install <package_name>
-
-
При работе с несколькими окружениями Python обычно безопаснее и проще создавать и использовать виртуальные окружения. Это поможет избежать возможных конфликтов имён команд и путаницы с используемой версией Python:
python3.14t -m venv <venv_name>
затем выполните команду activate.
-
Чтобы запустить свободнопоточную версию IDLE:
python3.14t -m idlelib
- Интерпретаторы в обеих сборках реагируют на одни и те же переменные окружения PYTHON, что может привести к неожиданным результатам, например, если в профиле оболочки задана
PYTHONPATH. При необходимости можно использовать параметры командной строки, например-E, чтобы игнорировать эти переменные окружения. - Свободнопоточная сборка связывается со сторонними динамическими библиотеками, такими как
OpenSSLиTk, установленными в традиционном фреймворке. Это означает, что обе сборки также используют общий набор доверенных сертификатов, установленных скриптом Install Certificates.command, поэтому его достаточно запустить один раз. -
Если вы не можете полагаться на то, что ссылка в
/usr/local/binуказывает наpython.orgсвободнопоточныйpython3.14t(например, если вы хотите установить туда собственную версию или это сделает другой дистрибутив), можно явно задать переменную окружения оболочкиPATH, включив в неё каталогbinфреймворкаPythonT:export PATH="/Library/Frameworks/PythonT.framework/Versions/3.14/bin":"$PATH"
Традиционная установка фреймворка по умолчанию делает нечто подобное, за исключением
Python.framework. Помните, что наличие обоих каталоговbinфреймворка вPATHможет привести к путанице, если в них есть совпадающие имена, напримерpython3.14; фактически используемый вариант зависит от порядка их появления вPATH. Командыwhich python3.xилиwhich python3.xtпозволяют узнать, какой путь используется. Виртуальные окружения помогают избежать такой неоднозначности. Ещё один вариант — создать псевдоним оболочки alias для нужного интерпретатора, например:alias py3.14="/Library/Frameworks/Python.framework/Versions/3.14/bin/python3.14" alias py3.14t="/Library/Frameworks/PythonT.framework/Versions/3.14/bin/python3.14t"
5.5.2. Установка с помощью командной строки
Если вы хотите автоматизировать установку установочного пакета python.org (вместо использования привычного графического приложения macOS Installer), утилита командной строки macOS installer также позволяет выбирать нестандартные параметры. Если вы не знакомы с installer, она может показаться довольно запутанной (дополнительную информацию см. в man installer). Например, следующий фрагмент оболочки показывает один из способов установки с использованием выпуска 3.14.0b2 и выбором свободнопоточного интерпретатора:
RELEASE="python-3.140b2-macos11.pkg"
# download installer pkg
curl -O https://www.python.org/ftp/python/3.14.0/${RELEASE}
# create installer choicechanges to customize the install:
# enable the PythonTFramework-3.14 package
# while accepting the other defaults (install all other packages)
cat > ./choicechanges.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>attributeSetting</key>
<integer>1</integer>
<key>choiceAttribute</key>
<string>selected</string>
<key>choiceIdentifier</key>
<string>org.python.Python.PythonTFramework-3.14</string>
</dict>
</array>
</plist>
EOF
sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges.plist -target / Затем можно проверить, что доступны обе сборки установщика, например, так:
$ # test that the free-threaded interpreter was installed if the Unix Command Tools package was enabled $ /usr/local/bin/python3.14t -VV Python 3.14.0b2 free-threading build (v3.14.0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)] $ # and the traditional interpreter $ /usr/local/bin/python3.14 -VV Python 3.14.0b2 (v3.14.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)] $ # test that they are also available without the prefix if /usr/local/bin is on $PATH $ python3.14t -VV Python 3.14.0b2 free-threading build (v3.14.0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)] $ python3.14 -VV Python 3.14.0b2 (v3.14.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]
Примечание
Текущие установщики python.org устанавливаются только в фиксированные расположения, например /Library/Frameworks/, /Applications и /usr/local/bin. Нельзя использовать параметр -domain команды installer, чтобы установить Python в другие расположения.
5.5.3. Распространение приложений Python
Существует ряд инструментов для преобразования кода Python в автономное приложение, готовое к распространению:
-
py2app: позволяет создавать пакеты macOS
.appна основе проекта Python. -
Briefcase: часть проекта BeeWare; кроссплатформенный инструмент упаковки, поддерживающий создание пакетов
.appв macOS, а также управление подписанием и нотариальным заверением. - PyInstaller: кроссплатформенный инструмент упаковки, создающий один файл или папку в качестве распространяемого артефакта.
5.5.4. Соответствие требованиям App Store
Приложения, отправленные для распространения через App Store для macOS, должны пройти проверку приложений Apple. Этот процесс включает набор автоматических правил проверки, которые анализируют пакет отправленного приложения на наличие проблемного кода.
Стандартная библиотека Python содержит код, который, как известно, нарушает эти автоматические правила. Хотя эти нарушения, по-видимому, являются ложными срабатываниями, оспорить правила проверки Apple нельзя. Поэтому для прохождения проверки App Store необходимо изменить стандартную библиотеку Python.
В дереве исходного кода Python есть файл патча, удаляющий весь код, который, как известно, вызывает проблемы при проверке App Store. Этот патч применяется автоматически, если CPython настраивается с параметром --with-app-store-compliance.
Обычно этот патч не требуется для использования CPython на Mac; он также не нужен, если приложение распространяется вне App Store для macOS. Он требуется только при использовании App Store для macOS в качестве канала распространения.
5.6. Другие ресурсы
На странице справки python.org приведены ссылки на множество полезных ресурсов. Ещё один источник поддержки — список рассылки Pythonmac-SIG, предназначенный специально для пользователей и разработчиков Python на Mac.
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/using/mac.html