Документация Python неофициальный перевод
Содержание страницы

5. Использование Python на macOSUsing Python on macOS

Этот документ представляет обзор особенностей macOS, которые полезно знать, чтобы начать работу с Python на компьютерах Mac. Python на Mac под управлением macOS очень похож на Python на других Unix-подобных платформах, но есть некоторые различия в установке и некоторых возможностях.

Существуют различные способы получения и установки Python для macOS. Предварительно собранные версии последних версий Python доступны у ряда дистрибьюторов. Большая часть этого документа описывает использование Python, предоставляемого командой CPython для загрузки с веб-сайта python.org. См. Альтернативные дистрибутивы для других вариантов.

5.1. Использование Python для macOS от python.orgUsing Python for macOS from python.org

5.1.1. Шаги установкиInstallation steps

Для текущих версий Python (кроме тех, что в статусе security) команда выпуска создает установочный пакет Python для macOS для каждого нового релиза. Список доступных установщиков доступен здесь. Рекомендуется по возможности использовать самую последнюю поддерживаемую версию Python. Текущие установщики предоставляют сборку universal2 binary, которая работает нативно на всех Mac (Apple Silicon и Intel), поддерживаемых широким спектром версий macOS, в настоящее время, как правило, начиная с macOS 10.15 Catalina.

Загруженный файл представляет собой стандартный установочный пакет macOS (.pkg). Информация о целостности файла (контрольная сумма, размер, подпись sigstore и т.д.) для каждого файла включена на странице загрузки релиза. Установочные пакеты и их содержимое подписаны и заверены с помощью сертификатов Python Software Foundation Apple Developer ID для соответствия требованиям macOS Gatekeeper.

Для установки по умолчанию дважды щелкните загруженный установочный пакет. Это должно запустить стандартное приложение macOS Installer и отобразить первое из нескольких окон установки.

../_images/mac_installer_01_introduction.png

Нажатие кнопки Continue открывает Read Me этого установщика. Помимо прочей важной информации, в Read Me указано, какая версия Python будет установлена и на каких версиях macOS она поддерживается. Возможно, потребуется прокрутить, чтобы прочитать весь файл. По умолчанию этот Read Me также будет установлен в /Applications/Python 3.14/ и будет доступен для чтения в любое время.

../_images/mac_installer_02_readme.png

Нажатие Continue приводит к отображению лицензии на Python и другое включенное программное обеспечение. Затем необходимо Agree с условиями лицензии, прежде чем перейти к следующему шагу. Этот файл лицензии также будет установлен и будет доступен для чтения позже.

../_images/mac_installer_03_license.png

После принятия условий лицензии следующим шагом отображается Тип установки. Для большинства случаев подходит стандартный набор операций установки.

../_images/mac_installer_04_installation_type.png

Нажав кнопку Customize, можно выбрать или пропустить определенные компоненты пакета установщика. Щелкните на каждом имени пакета, чтобы увидеть описание того, что он устанавливает. Чтобы также установить поддержку опциональной функции свободной многопоточности, см. Установка свободно-поточных двоичных файлов.

../_images/mac_installer_05_custom_install.png

В любом случае, нажатие Install начнет процесс установки, запросив разрешение на установку нового программного обеспечения. Требуется имя пользователя macOS с правами Administrator, так как установленный Python будет доступен всем пользователям Mac.

Когда установка завершится, появится окно Summary.

../_images/mac_installer_06_summary.png

Дважды щелкните на значок или файл Install Certificates.command в окне /Applications/Python 3.14/, чтобы завершить установку.

../_images/mac_installer_07_applications.png

Это откроет временное окно оболочки Terminal, которое использует новый Python для загрузки и установки корневых сертификатов SSL для его работы.

../_images/mac_installer_08_install_certificates.png

Если в окне терминала появятся Successfully installed certifi и update complete, установка завершена. Закройте это окно терминала и окно установщика.

Установка по умолчанию включает:

  • Папка Python 3.14 в вашей папке Applications. В ней вы найдете IDLE – среду разработки, которая является стандартной частью официальных дистрибутивов Python; и Python Launcher, который обрабатывает двойные щелчки по скриптам Python из macOS Finder.

  • Фреймворк /Library/Frameworks/Python.framework, который включает исполняемый файл Python и библиотеки. Установщик добавляет этот путь в ваш shell path. Чтобы удалить Python, вы можете удалить эти три компонента. Символические ссылки на исполняемый файл Python помещаются в /usr/local/bin/.

Примечание

Последние версии macOS включают команду python3 в /usr/bin/python3, которая ссылается на обычно более старую и неполную версию Python, предоставленную и используемую инструментами разработки Apple, Xcode или Command Line Tools for Xcode. Никогда не изменяйте и не пытайтесь удалить эту установку, так как она контролируется Apple и используется программным обеспечением, предоставленным Apple или сторонними разработчиками. Если вы решите установить более новую версию Python из python.org, на вашем компьютере будут две разные, но рабочие установки Python, которые могут сосуществовать. Параметры установки по умолчанию должны гарантировать, что будет использоваться ее python3 вместо системной python3.

5.1.2. Как запустить скрипт PythonHow to run a Python script

Есть два способа запустить интерпретатор Python. Если вы знакомы с использованием оболочки Unix в окне терминала, вы можете вызвать python3.14 или python3, дополнительно указав один или несколько параметров командной строки (описано в Командная строка и окружение). В руководстве по Python также есть полезный раздел о интерактивном использовании Python из оболочки.

Вы также можете запустить интерпретатор через интегрированную среду разработки. IDLE – редактор и оболочка Python – это базовая среда редактирования и интерпретатор, входящие в стандартный дистрибутив Python. IDLE включает меню Help, которое позволяет получить доступ к документации Python. Если вы совсем новичок в Python, вы можете прочитать введение в руководство в этом документе.

Доступно много других редакторов и IDE, см. Редакторы и IDE для получения дополнительной информации.

Чтобы запустить файл скрипта Python из окна терминала, вы можете вызвать интерпретатор с именем файла скрипта:

python3.14 myscript.py

Чтобы запустить скрипт из Finder, вы можете:

  • Перетащите его на Python Launcher.

  • Выберите Python Launcher в качестве приложения по умолчанию для открытия своего скрипта (или любого скрипта .py) в окне информации Finder и дважды щёлкните по нему. В Python Launcher есть различные настройки, позволяющие управлять запуском скрипта. Option-перетаскивание позволяет изменить их для одного запуска или использовать меню Preferences для глобальных изменений.

Имейте в виду, что запуск скрипта непосредственно из Finder macOS может давать иные результаты по сравнению с запуском из окна терминала, поскольку скрипт не будет выполняться в обычном окружении оболочки, включая настройки переменных окружения в профилях оболочки. И, как и с любым другим скриптом или программой, убедитесь, что запускаете то, что нужно.

5.2. Альтернативные дистрибутивыAlternative Distributions

Помимо стандартного 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. Установка дополнительных пакетов PythonInstalling Additional Python Packages

Обратитесь к Python Packaging User Guide для получения дополнительной информации.

5.4. Программирование графического интерфейсаGUI Programming

Существует несколько вариантов создания приложений с графическим интерфейсом на Mac с помощью Python.

Стандартный набор инструментов для графического интерфейса Python – это tkinter, основанный на кросс-платформенном наборе инструментов Tk (https://www.tcl.tk). В установщик включена собственная версия Tk для macOS.

PyObjC – это привязка Python к фреймворку Objective-C/Cocoa от Apple. Информация о PyObjC доступна на pyobjc.

Доступен ряд альтернативных наборов инструментов для графического интерфейса macOS, включая:

  • PySide: официальные привязки Python к набору инструментов Qt.

  • PyQt: альтернативные привязки Python к Qt.

  • Kivy: кросс-платформенный набор инструментов для графического интерфейса, поддерживающий настольные и мобильные платформы.

  • Toga: часть проекта BeeWare; поддерживает настольные, мобильные, веб- и консольные приложения.

  • wxPython: кросс-платформенный набор инструментов, который поддерживает настольные операционные системы.

5.5. Продвинутые темыAdvanced Topics

5.5.1. Установка свободно-поточных сборокInstalling Free-threaded Binaries

Добавлено в версии 3.13.

The python.org Python for macOS installer package can optionally install an additional build of Python 3.14 that supports PEP 703, the free-threading feature (running with the global interpreter lock disabled). Check the release page on python.org for possible updated information.

Режим свободной многопоточности работает и продолжает улучшаться, но есть некоторые дополнительные накладные расходы в однопоточных задачах по сравнению с обычной сборкой. Кроме того, сторонние пакеты, особенно с модулем-расширением, могут быть не готовы к использованию в свободно-поточной сборке и будут повторно включать GIL. Поэтому поддержка свободной многопоточности не устанавливается по умолчанию. Она упакована как отдельный вариант установки, доступный при нажатии кнопки Customize на шаге Тип установки установщика, как описано выше.

../_images/mac_installer_09_custom_install_free_threaded.png

Если установлен флажок рядом с именем пакета Free-threaded Python, будет также установлена отдельная PythonT.framework наряду с обычной Python.framework в /Library/Frameworks. Такая конфигурация позволяет свободно-поточной сборке Python 3.14 сосуществовать в вашей системе с традиционной (только с GIL) сборкой Python 3.14 с минимальным риском при установке или тестировании. Эта схема установки может измениться в будущих выпусках.

Известные предупреждения и ограничения:

  • Пакет UNIX command-line tools, который выбран по умолчанию, установит ссылки в /usr/local/bin для python3.14t, свободнопоточного интерпретатора и python3.14t-config, утилиты конфигурации, которая может быть полезна для сборщиков пакетов. Поскольку /usr/local/bin обычно включён в вашу переменную окружения PATH, в большинстве случаев не требуется изменять переменные окружения PATH для использования python3.14t.

  • В этом выпуске пакет Shell profile updater и 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>

    затем активировать.

  • Для запуска свободнопоточной версии IDLE:

    python3.14t -m idlelib
  • Интерпретаторы в обеих сборках реагируют на одни и те же переменные окружения PYTHON, что может привести к неожиданным результатам, например, если PYTHONPATH установлена в профиле оболочки. При необходимости существуют параметры командной строки, такие как -E, чтобы игнорировать эти переменные окружения.

  • Свободнопоточная сборка связывается со сторонними разделяемыми библиотеками, такими как OpenSSL и Tk, установленными в традиционном фреймворке. Это означает, что обе сборки также используют один набор сертификатов доверия, установленный сценарием Install Certificates.command, поэтому его нужно запустить только один раз.

  • Если вы не можете полагаться на то, что ссылка в /usr/local/bin указывает на python.org свободнопоточный python3.14t (например, если вы хотите установить туда свою версию или это делает другой дистрибутив), вы можете явно задать переменную окружения оболочки PATH, включив в неё каталог фреймворка PythonT bin:

    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. Установка из командной строкиInstalling using the command line

Если вы хотите автоматизировать установку пакета python.org (а не использовать знакомое приложение Installer macOS с графическим интерфейсом), утилита командной строки 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. Нельзя использовать опцию installer -domain для установки в другие места.

5.5.3. Распространение приложений PythonDistributing Python Applications

Существует ряд инструментов для преобразования кода Python в автономное распространяемое приложение:

  • py2app: Поддерживает создание пакетов macOS .app из проекта Python.

  • Briefcase: Часть проекта BeeWare Project; кроссплатформенный инструмент упаковки, поддерживающий создание пакетов .app на macOS, а также управление подписыванием и нотариальным заверением.

  • PyInstaller: Кроссплатформенный инструмент упаковки, который создаёт один файл или папку в качестве распространяемого артефакта.

5.5.4. Соответствие требованиям App StoreApp Store Compliance

Приложения, отправляемые на распространение через Mac App Store, должны пройти процесс проверки приложений Apple. Этот процесс включает набор автоматических правил валидации, которые проверяют отправленный пакет приложения на наличие проблемного кода.

Стандартная библиотека Python содержит код, который, как известно, нарушает эти автоматические правила. Хотя эти нарушения являются ложными срабатываниями, правила проверки Apple оспорить нельзя. Поэтому необходимо изменить стандартную библиотеку Python, чтобы приложение прошло проверку App Store.

Дерево исходных текстов Python содержит файл патча, который удаляет весь код, вызывающий проблемы с процессом проверки App Store. Этот патч применяется автоматически, когда CPython сконфигурирован с опцией --with-app-store-compliance.

Этот патч обычно не требуется для использования CPython на Mac; он также не требуется, если вы распространяете приложение вне Mac App Store. Он только требуется, если вы используете Mac App Store в качестве канала распространения.

5.6. Другие ресурсыOther Resources

Страница справки python.org содержит ссылки на множество полезных ресурсов. Список рассылки Pythonmac-SIG является ещё одним ресурсом поддержки, предназначенным специально для пользователей и разработчиков Python на Mac.