FAQ

Частые вопросы

О выполнении кода, библиотеках и расширениях, передаче файлов и ассистенте ИИ.

01

Выполнение кода

Почему кнопка «Остановить» не останавливает выполнение сразу?

Кнопка «Остановить» запрашивает прерывание, но не может немедленно прервать любую операцию. При вызове time.sleep(), ожидании ответа сети или блокировки, а также при некоторых вычислениях в нативных библиотеках выполнение остановится только после возврата из вызова. Импорт модуля тоже должен сначала завершиться.

Если выполнение долго не останавливается, сохраните файлы, закройте Pythona через переключатель приложений iOS и откройте снова.

Почему приложение закрывается во время выполнения скрипта?

Если скрипт завершает выполнение вызовом quit(), exit() или sys.exit(), Pythona по умолчанию закрывает всё приложение.

В разделе «Настройки → quit() / exit()» замените «Выйти из Pythona» на «Завершить только текущий запуск». Тогда завершится только текущий запуск, а приложение останется открытым.

При обработке больших массивов или запуске больших моделей чрезмерное потребление памяти может привести к тому, что iOS принудительно закроет приложение. При этом ошибка Python может не появиться. Настройка «quit() / exit()» не влияет на такое закрытие. Попробуйте уменьшить объём данных или размер модели либо обрабатывать данные частями.

Если проблема повторяется, приложите к сообщению код и шаги, позволяющие её воспроизвести.

Как передать аргументы скрипту?

Нажмите и удерживайте кнопку запуска в редакторе, затем выберите «Запустить с аргументами...». Аргументы передаются скрипту через sys.argv[1:]. Пункт «Изменить конфигурации запуска...» в том же меню позволяет сохранить часто используемые аргументы и задать конфигурацию по умолчанию.

Как запустить скрипт из приложения «Команды»?

Нажмите имя файла в верхней части редактора, выберите «Быстрые команды» и скопируйте «Путь к скрипту». Затем добавьте действие Pythona «Запустить скрипт Python» в приложении «Команды» и укажите путь. При необходимости можно добавить аргументы и передать текстовый вывод действия последующим действиям.

02

Библиотеки и расширения

Почему некоторые сторонние библиотеки не устанавливаются?

Менеджер пакетов устанавливает сторонние библиотеки, которые распространяются в виде wheel-пакетов на чистом Python. Некоторые библиотеки доступны только в виде исходного кода или требуют скомпилированных расширений на C, C++, Rust и других языках. Их нельзя установить напрямую так же, как на компьютере. Нативные библиотеки, такие как NumPy и SciPy, уже скомпилированы и включены в приложение.

Библиотеки на чистом Python тоже должны быть совместимы с Python 3.14 и iOS. Если они зависят от системных функций, недоступных в этой среде, они могут не работать.

Основные встроенные библиотеки

Синхронизируются ли установленные библиотеки через iCloud?

Нет. Библиотеки, установленные через Менеджер пакетов, хранятся локально на текущем устройстве. Скрипты из локального хранилища, iCloud и внешних папок используют одни и те же библиотеки.

После синхронизации проекта через iCloud его зависимости нужно отдельно установить на другом устройстве.

Какие собственные расширения есть в Pythona и как использовать функции iOS?

В Pythona есть модуль scene для игр, анимации и интерактивной графики. photos позволяет выбирать фото и видео через системное окно выбора или сохранять их в медиатеку. audio обеспечивает воспроизведение, запись и звуковые эффекты; coreml загружает модели Core ML и выполняет инференс на устройстве.

Пакет pythona позволяет работать с функциями приложения: через pythona.packages можно устанавливать сторонние пакеты, а через pythona.ai — создавать, читать и обновлять настройки пользовательских провайдеров ИИ.

Эти модули зависят от среды выполнения Pythona. При переносе в другую среду Python нужно заменить или адаптировать соответствующие вызовы. Одноимённые модули в других приложениях могут иметь другие API.

Для доступа к другим системным функциям iOS рекомендуем rubicon-objc: он позволяет вызывать нативные API iOS из Python, в том числе UIKit для создания нативного интерфейса. В приложении есть примеры получения сведений об устройстве и работы с WKWebView.

У этих расширений Pythona сейчас нет отдельной документации по API. Пользуйтесь примерами в приложении, доступным исходным кодом модулей Python и встроенной справкой. Можно также попросить ассистента ИИ сначала изучить эти материалы, а затем написать и запустить код.

Что использовать для создания игр или графического интерфейса?

Для 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. В приложении есть соответствующие примеры.

03

Файлы

Как обмениваться файлами с компьютером?

Для проектов с кодом рекомендуем Git: клонируйте один и тот же удалённый репозиторий в Pythona и на компьютере. После изменений создайте коммит и отправьте его с помощью push, а затем получите обновления на другом устройстве с помощью pull.

Также можно синхронизировать файлы через iCloud Drive или экспортировать их с помощью системной функции «Поделиться». Для обмена файлами с Mac можно использовать AirDrop.

Можно включить в приложении «Файловый сервер», а затем открыть показанный адрес в браузере на компьютере в той же локальной сети, чтобы загружать и скачивать файлы. У файлового сервера нет пароля для входа. Используйте его в доверенной сети и останавливайте после завершения передачи.

04

Ассистент ИИ

Какие файлы может читать и записывать ассистент ИИ?

Ассистент ИИ использует рабочую область текущего диалога как каталог проекта по умолчанию. Перед отправкой первого сообщения в новом диалоге можно выбрать папку через «Сменить рабочую область». Переход в другой каталог в файловом браузере не меняет рабочую область существующего диалога.

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

Поддерживает ли ассистент ИИ файл AGENTS.md?

Да. Создайте AGENTS.md в корне рабочей области текущего диалога. В нём можно указать описание проекта, стиль кода и другие правила совместной работы.

Ассистент автоматически читает этот файл при обработке каждого нового сообщения. После сохранения изменений они вступят в силу при отправке следующего сообщения. Автоматически загружается только AGENTS.md из корня рабочей области; одноимённые файлы в подкаталогах автоматически не объединяются.

Для чего нужен пользовательский провайдер (JS Provider)?

Пользовательский провайдер позволяет с помощью JavaScript настроить способ подключения к сервисам ИИ. Можно использовать API, способы аутентификации и функции сервисов, которые пока не поддерживаются встроенными провайдерами, а также добавлять собственные инструменты.

Здесь используется JavaScript, чтобы подключение к сервисам ИИ, аутентификация и обработка ответов выполнялись в отдельной среде и эта логика интеграции не влияла на вашу среду Python.

Собственные инструменты могут обращаться к внешним сервисам или использовать run_python. Это позволяет ассистенту запускать скрипты Python и через них вызывать функции iOS.

Если встроенные провайдеры уже отвечают вашим потребностям, дополнительная настройка не нужна. Для расширения возможностей обратитесь к справочнику JavaScript API и примерам на странице настройки.

Остались вопросы?

Сообщая о проблеме, укажите версию приложения, шаги для её воспроизведения и полный текст ошибки.

Связаться с разработчиком