FAQ
Частые вопросы
О запуске и восстановлении, редактировании и выполнении кода, библиотеках и расширениях, передаче файлов, моделях и ассистенте ИИ, покупках и их восстановлении.
Запуск и восстановление
Что делать, если Pythona вылетает сразу после открытия?
Попробуйте безопасный запуск: нажмите и удерживайте значок Pythona на экране «Домой», затем выберите «Безопасный запуск».
Сбой при запуске может быть связан с восстановлением ранее открытых файлов или папок. Безопасный запуск сбрасывает сохранённые сведения об открытых вкладках и последней папке, открывая пустой редактор и локальную папку Documents. Ваши файлы скриптов остаются на месте.
После успешного запуска открывайте ранее использованные папки и файлы по одному, чтобы проверить, связан ли сбой с определённым файлом или расположением. Если открытие файла снова вызывает сбой и включена «Семантическая подсветка», повторите безопасный запуск, отключите «Семантическая подсветка» в разделе «Настройки → Тема» и попробуйте ещё раз.
Что делать, если пример скрипта перестал работать после обновления приложения?
При обновлении приложения сохранённые примеры скриптов не заменяются автоматически. Если пример перестал работать после обновления, восстановите примеры из текущей версии приложения и попробуйте запустить его снова.
Сначала сохраните копии примеров, которые вы изменяли, затем выберите «Настройки → Восстановить примеры скриптов». Файлы примеров с совпадающими именами в папке examples будут перезаписаны.
Восстановление примеров не сбрасывает установленные пакеты Python. Если конфликт версий зависимостей сохраняется, проверьте установленные версии пакетов, указанных в сообщении об ошибке.
Подробнее о конфликтах зависимостейРедактирование и запуск
Что делать, если приложение вылетает при вводе кода?
Если приложение регулярно вылетает при вводе кода в редакторе, это может быть связано с автодополнением. Отключите «Автоматически показывать предложения» в разделе «Настройки → Автодополнение кода» и попробуйте снова ввести код в том же файле, чтобы проверить, повторяется ли сбой.
При сообщении о проблеме приложите фрагмент кода, вызывающий сбой, точную последовательность ввода и укажите, возникает ли сбой при отключённом параметре «Автоматически показывать предложения».
Почему кнопка «Остановить» не останавливает выполнение сразу?
Кнопка «Остановить» запрашивает прерывание, но не может немедленно прервать любую операцию. При вызове time.sleep(), ожидании ответа сети или блокировки, а также при некоторых вычислениях в нативных библиотеках выполнение остановится только после возврата из вызова. Импорт модуля тоже должен сначала завершиться.
Если выполнение долго не останавливается, сохраните файлы, закройте Pythona через переключатель приложений iOS и откройте снова.
Почему приложение закрывается во время выполнения скрипта?
Функции выхода
Если скрипт завершает выполнение вызовом quit(), exit() или sys.exit(), Pythona по умолчанию закрывает всё приложение.
В разделе «Настройки → quit() / exit()» замените «Выйти из Pythona» на «Завершить только текущий запуск». Тогда завершится только текущий запуск, а приложение останется открытым.
Нехватка памяти
При обработке больших массивов или запуске больших моделей чрезмерное потребление памяти может привести к тому, что iOS принудительно закроет приложение. При этом ошибка Python может не появиться. Настройка «quit() / exit()» не влияет на такое закрытие. Попробуйте уменьшить объём данных или размер модели либо обрабатывать данные частями.
Потоки и UIKit
Скрипты Python в Pythona по умолчанию выполняются в фоновом потоке. При вызове UIKit через ctypes или rubicon-objc такие операции, как создание и обновление интерфейса, должны выполняться в главном потоке iOS (потоке интерфейса). Иначе приложение может аварийно завершиться.
Можно оформить эти операции в виде функции и передать её встроенной функции run_on_ui(...) для асинхронного выполнения в главном потоке или самостоятельно отправить их в главную очередь через GCD. Пример с WKWebView в приложении показывает, как использовать run_on_ui.
Если проблема повторяется, приложите к сообщению код и шаги, позволяющие её воспроизвести.
Как завершить ввод и отправить EOF?
Во время выполнения скрипта выберите «Отправить EOF» в меню редактирования поля ввода консоли или нажмите Ctrl+D на внешней клавиатуре. Сначала будет отправлен текст из поля ввода, затем ввод для текущего запуска завершится.
Как передать аргументы скрипту?
Нажмите и удерживайте кнопку запуска в редакторе, затем выберите «Запустить с аргументами...». Аргументы передаются скрипту через sys.argv[1:]. Пункт «Изменить конфигурации запуска...» в том же меню позволяет сохранить часто используемые аргументы и задать конфигурацию по умолчанию.
Как запустить скрипт из приложения «Команды»?
Нажмите имя файла в верхней части редактора, выберите «Быстрые команды» и скопируйте «Путь к скрипту». Затем добавьте действие Pythona «Запустить скрипт Python» в приложении «Команды» и укажите путь. При необходимости можно добавить аргументы и передать текстовый вывод действия последующим действиям.
Как запустить скрипт с экрана «Домой» одним нажатием?
Откройте скрипт в Pythona, нажмите имя файла в верхней части редактора, выберите «Быстрые команды» и скопируйте «URL».
В системном приложении «Команды» создайте команду, добавьте действие «Открыть URL» и вставьте скопированный URL.
Откройте раздел «Подробнее» этой команды и выберите «Добавить на экран „Домой“». Задайте название и значок, затем нажмите «Добавить».
После этого нажатие на значок на экране «Домой» откроет Pythona и запустит соответствующий скрипт.
Инструкция Apple по добавлению на экран «Домой»Библиотеки и расширения
Почему некоторые сторонние библиотеки не устанавливаются?
Менеджер пакетов устанавливает сторонние библиотеки, которые распространяются в виде wheel-пакетов на чистом Python. Некоторые библиотеки доступны только в виде исходного кода или требуют скомпилированных расширений на C, C++, Rust и других языках. Их нельзя установить напрямую так же, как на компьютере. Нативные библиотеки, такие как NumPy и SciPy, уже скомпилированы и включены в приложение.
Библиотеки на чистом Python тоже должны быть совместимы с Python 3.14 и iOS. Если они зависят от системных функций, недоступных в этой среде, они могут не работать.
Основные встроенные библиотекиПочему при установке пакета меняются версии зависимостей или возникает конфликт?
Все проекты используют общее окружение пользовательских пакетов на устройстве. Установщик сохраняет существующие зависимости, если они соответствуют требованиям; иначе он может заменить установленные пользователем пакеты на чистом Python более новой или старой версией. Пакеты, встроенные в приложение, автоматически не заменяются.
Перед сменой версии установщик проверяет связанные зависимости, объявленные другими установленными пакетами. При конфликте или требовании, которое он не может обработать, установка останавливается с объяснением причины. Установщик не перебирает все сочетания версий и не может выявить все проблемы совместимости.
Можно указать совместимые версии, удалить ненужные конфликтующие пакеты и повторить попытку либо написать собственные скрипты Python для загрузки и размещения пакетов на чистом Python и управления их зависимостями. Вызовы pythona.packages.install() подчиняются тем же правилам; ручная установка также ограничена совместимостью с Python и iOS. После замены уже импортированного пакета перезапустите Pythona.
Синхронизируются ли установленные библиотеки через iCloud?
Нет. Библиотеки, установленные через Менеджер пакетов, хранятся локально на текущем устройстве. Скрипты из локального хранилища, iCloud и внешних папок используют одни и те же библиотеки.
После синхронизации проекта через iCloud его зависимости нужно отдельно установить на другом устройстве.
Какие библиотеки для работы с функциями iOS есть в Pythona и как ими пользоваться?
Pythona включает cocoa-py: модуль scene предназначен для игр, анимации и интерактивной графики. photos позволяет выбирать фото и видео через системное окно выбора или сохранять их в медиатеку. audio обеспечивает воспроизведение, запись и звуковые эффекты; coreml загружает модели Core ML и выполняет инференс на устройстве.
Пакет pythona позволяет работать с функциями приложения: через pythona.packages можно устанавливать сторонние пакеты, а через pythona.ai — создавать, читать и обновлять настройки пользовательских провайдеров ИИ.
Для доступа к другим системным функциям iOS рекомендуем rubicon-objc: он позволяет вызывать нативные API iOS из Python, в том числе UIKit для создания нативного интерфейса. В приложении есть примеры получения сведений об устройстве и работы с WKWebView.
cocoa-py имеет открытый исходный код и также поддерживает macOS; доступные функции зависят от платформы. Исходный код и документация по API доступны на GitHub. Приветствуются Issue и Pull Request.
Исходный код и документация cocoa-pyЧто использовать для создания игр или графического интерфейса?
Для 2D-игр, анимации и воспроизведения звука рекомендуем pygame (в приложение включён pygame-ce). pygame.mixer может отдельно воспроизводить музыку или звуковые эффекты без создания окна.
Интерфейсы и веб-игры можно создавать на HTML, CSS и JavaScript, а в Pythona отображать через WKWebView. Веб-контент удобно использовать на разных платформах. При переносе на другую платформу нужно адаптировать код, который отображает страницу через WKWebView и связывает её с Python или функциями iOS.
Для нативного интерфейса iOS можно вызывать UIKit через rubicon-objc. Код, использующий UIKit, по-прежнему зависит от iOS.
Pythona также поддерживает Tkinter для запуска существующих скриптов Tkinter и создания простых инструментов. Интерфейс сохраняет традиционный настольный вид. Если для вас важнее внешний вид и взаимодействие на мобильных устройствах, рекомендуем веб-интерфейс или UIKit через rubicon-objc. В приложении есть соответствующие примеры.
Файлы
Как обмениваться файлами с компьютером?
Для проектов с кодом рекомендуем Git: клонируйте один и тот же удалённый репозиторий в Pythona и на компьютере. После изменений создайте коммит и отправьте его с помощью push, а затем получите обновления на другом устройстве с помощью pull.
Также можно синхронизировать файлы через iCloud Drive или экспортировать их с помощью системной функции «Поделиться». Для обмена файлами с Mac можно использовать AirDrop.
Можно включить в приложении «Файловый сервер», а затем открыть показанный адрес в браузере на компьютере в той же локальной сети, чтобы загружать и скачивать файлы. У файлового сервера нет пароля для входа. Используйте его в доверенной сети и останавливайте после завершения передачи.
ИИ
Какие локальные модели ИИ можно использовать в Python?
MLX: приложение включает MLX, который вместе с mlx-lm позволяет запускать совместимые языковые модели. Пример — examples/llm_demo.py в приложении. При первом запуске скрипт устанавливает зависимости через интернет и загружает модель с Hugging Face. Устройство должно поддерживать MLX и иметь достаточно оперативной памяти. Скорость работы и доступный размер моделей зависят от производительности и памяти устройства.
Apple Foundation Models: встроенный apple-fm-sdk позволяет обращаться к модели Apple, работающей на устройстве. Импортируйте его в Python командой import apple_fm_sdk. Нужны iOS / iPadOS 26 или новее, совместимое устройство с включённым Apple Intelligence и готовая к работе системная модель. Доступность также зависит от языка и региона. Использование API описано в документации по ссылке ниже.
В обоих случаях модель выполняет вычисления на устройстве. Для загрузки зависимостей и моделей нужен интернет. Скрипты и инструменты ассистента, использующие онлайн-сервисы, также обращаются к сети.
Посмотреть примеры использования Foundation Models Python SDKКак подключить локальную модель к ассистенту ИИ?
Проект с открытым исходным кодом Pythona AI Setup позволяет создавать конфигурации Apple Foundation Models или локальных моделей MLX для ассистента ИИ.
Клонируйте проект в Pythona и запустите main.py из корня проекта. Следуя подсказкам на странице, выберите модель и инструменты и добавьте конфигурацию. Затем выберите это подключение в настройках ассистента ИИ. Подробные шаги приведены в README проекта.
Чтобы использовать инструменты ассистента для чтения и записи файлов или запуска Python, модель MLX должна поддерживать вызов инструментов. Модели без такой поддержки можно использовать для диалога, отключив все инструменты.
Открыть Pythona AI Setup и инструкцииКакие файлы может читать и записывать ассистент ИИ?
Ассистент ИИ использует рабочую область текущего диалога как каталог проекта по умолчанию. Перед отправкой первого сообщения в новом диалоге можно выбрать папку через «Сменить рабочую область». Переход в другой каталог в файловом браузере не меняет рабочую область существующего диалога.
Ассистент ИИ также может вызывать run_python для выполнения кода Python и чтения файлов и папок внутри приложения, в том числе за пределами рабочей области. Такой доступ не ограничен выбранной рабочей областью.
Поддерживает ли ассистент ИИ файл AGENTS.md?
Да. Создайте AGENTS.md в корне рабочей области текущего диалога. В нём можно указать описание проекта, стиль кода и другие правила совместной работы.
Ассистент автоматически читает этот файл при обработке каждого нового сообщения. После сохранения изменений они вступят в силу при отправке следующего сообщения. Автоматически загружается только AGENTS.md из корня рабочей области; одноимённые файлы в подкаталогах автоматически не объединяются.
Для чего нужен пользовательский провайдер (JS Provider)?
Пользовательский провайдер позволяет с помощью JavaScript настроить способ подключения к сервисам ИИ. Можно использовать API, способы аутентификации и функции сервисов, которые пока не поддерживаются встроенными провайдерами, а также добавлять собственные инструменты.
Здесь используется JavaScript, чтобы подключение к сервисам ИИ, аутентификация и обработка ответов выполнялись в отдельной среде и эта логика интеграции не влияла на вашу среду Python.
Собственные инструменты могут обращаться к внешним сервисам или использовать run_python. Это позволяет ассистенту запускать скрипты Python и через них вызывать функции iOS.
Если встроенные провайдеры уже отвечают вашим потребностям, дополнительная настройка не нужна. Для расширения возможностей обратитесь к справочнику JavaScript API и примерам на странице настройки.
Покупки и восстановление
Нужно ли покупать Pro заново на другом устройстве?
Нет. На другом устройстве войдите в App Store с тем же аккаунтом Apple, который использовали для покупки, чтобы продолжить пользоваться уже купленным Pro.
Если после установки Pythona на новое устройство или переустановки приложения по-прежнему появляется уведомление о пробном периоде или экран покупки, возможно, сведения о покупке ещё не синхронизированы. Подключитесь к интернету и нажмите «Восстановить покупки» на экране покупки.
Восстановление покупок бесплатно. Если этот же Pro уже куплен с того же аккаунта Apple, повторного списания не будет, даже если вы снова нажмёте кнопку покупки.
Почему Pro недоступен после смены аккаунта Apple?
Покупка Pro связана с аккаунтом Apple, который использовался в App Store при покупке. Если переключиться на другой аккаунт, с которого Pro не покупали, Pro может стать недоступен. Войдите в App Store с аккаунтом, использованным для покупки, затем нажмите «Восстановить покупки» в Pythona.
Если частое переключение аккаунтов App Store мешает вам пользоваться Pythona, свяжитесь с нами.
Остались вопросы?
Сообщая о проблеме, укажите версию приложения, шаги для её воспроизведения и полный текст ошибки.
Связаться с разработчиком