FAQ

常見問題

關於啟動與復原、程式碼編輯與執行、函式庫與擴充、檔案傳輸、AI 模型與助手,以及購買與還原。

01

啟動與復原

一打開 Pythona 就閃退怎麼辦?

可以嘗試安全啟動:在主畫面長按 Pythona 圖像,選擇「安全啟動」。

啟動時的閃退可能與還原上次開啟的檔案或檔案夾有關。安全啟動會重設上次開啟的分頁和檔案夾記錄,進入空白編輯器和本機 Documents 檔案夾。你的腳本檔案會保留。

成功啟動後,可以逐一開啟先前使用的檔案夾和檔案,排查是否與特定檔案或位置有關。如果開啟檔案時再次閃退,而且已開啟「語義高亮」,可以再次安全啟動,在「設定 → 主題」中關閉「語義高亮」後重試。

升級後範例指令碼無法執行怎麼辦?

App 升級不會自動替換已儲存的範例指令碼。如果升級後範例無法執行,可以先還原目前版本附帶的範例,再試著執行。

請先備份你修改過的範例,再到「設定 → 還原範例指令碼」操作。還原會覆寫 examples 資料夾中的同名範例檔案。

還原範例不會重設已安裝的 Python 套件。若仍出現相依套件版本衝突,請依照錯誤訊息檢查已安裝套件的版本。

查看相依套件衝突說明
02

編輯與執行

輸入程式碼時閃退怎麼辦?

如果在編輯器中輸入程式碼時反覆閃退,可能與自動補全有關。可以在「設定 → 程式碼補全」中關閉「自動顯示建議」,然後在同一檔案中重新嘗試輸入,觀察是否仍會閃退。

回報問題時,請附上觸發問題的程式碼片段、具體輸入步驟,以及關閉「自動顯示建議」後是否仍會閃退。

為什麼點擊「停止」後沒有立即停止?

點擊「停止」會要求中斷目前執行,但無法立即中斷所有操作。time.sleep()、等待網路回應、等待鎖定和部分原生函式庫運算,都需要等操作返回後才能停止;匯入模組時也會等匯入結束。

如果長時間無法停止,可以先儲存檔案,再從 iOS 的 App 切換器關閉 Pythona 後重新開啟。

為什麼執行腳本時,App 會直接退出?

退出函式

如果腳本透過 quit()、exit() 或 sys.exit() 結束執行,Pythona 預設會退出整個 App。

在「設定 → quit() / exit()」中,將「退出 Pythona」改為「僅結束目前執行」,就可以只結束目前執行,讓 App 保持開啟。

記憶體不足

處理大型陣列或執行大型模型時,如果記憶體用量過高,iOS 可能直接終止 App,不一定會出現 Python 錯誤訊息。這種退出不受「quit() / exit()」設定控制。可以嘗試減少資料量、使用較小的模型,或分批處理。

UIKit 執行緒

Pythona 的 Python 腳本預設在背景執行緒執行。透過 ctypes 或 rubicon-objc 呼叫 UIKit 時,建立、更新介面等操作需要在 iOS 主執行緒(UI 執行緒)執行,否則可能導致 App 閃退。

可以將這些操作封裝為函式,透過內建的 run_on_ui(...) 非同步提交到主執行緒,也可以自行透過 GCD 提交到主佇列。App 內的 WKWebView 範例展示了 run_on_ui 的用法。

如果問題反覆出現,請附上可重現問題的程式碼和操作步驟回報。

怎麼結束輸入、傳送 EOF?

執行腳本時,在主控台輸入欄位的編輯選單中選擇「結束輸入(EOF)」,也可使用外接鍵盤 Ctrl+D。輸入欄位中的文字會先送出,再結束本次執行的輸入。

怎麼向腳本傳入參數?

長按編輯器的執行按鈕,選擇「帶參數執行…」。參數會傳給腳本的 sys.argv[1:]。常用參數可以透過同一選單裡的「編輯執行配置…」儲存,並設為預設配置。

怎麼從系統「捷徑」執行腳本?

在編輯器中點一下頂部檔案名稱,選擇「捷徑」,複製「腳本路徑」。然後在系統「捷徑」App 中加入 Pythona 的「執行 Python 腳本」動作,填入路徑。需要時可以加入參數,動作傳回的文字輸出也可以交給後續動作使用。

怎麼從主畫面一鍵執行腳本?

在 Pythona 中打開腳本,點一下編輯器頂部的檔案名稱,選擇「捷徑」,複製「URL」。

在系統「捷徑」App 中建立捷徑,加入「打開 URL」動作,填入剛才複製的 URL。

在該捷徑的「詳細資訊」中選擇「加入主畫面」,設定名稱和圖像後加入。

之後點一下主畫面上的圖像,就會打開 Pythona 並執行對應腳本。

查看 Apple 的加入說明
03

函式庫與擴充

為什麼有些第三方函式庫無法安裝?

套件管理員支援安裝以純 Python wheel 形式發布的第三方函式庫。有些函式庫只提供原始碼,或依賴 C、C++、Rust 等編譯擴充模組,無法按照電腦上的方式直接安裝。NumPy、SciPy 等原生函式庫由 App 預先編譯提供。

純 Python 函式庫也需要相容於 Python 3.14 和 iOS;如果依賴目前環境不支援的系統功能,仍可能無法執行。

查看主要內建函式庫

安裝套件時為什麼會更換相依套件版本,或提示衝突?

所有專案共用目前裝置的使用者套件環境。安裝時會沿用符合需求的既有相依套件;不符合需求時,可能升級或降級使用者安裝的純 Python 相依套件。App 內建套件不會被自動替換。

更換版本前,安裝程式會檢查其他已安裝套件宣告的相關相依需求。發現衝突或無法處理的需求時,會停止並說明原因;它不會窮舉所有版本組合,也無法涵蓋所有相容性問題。

可以指定相容版本、解除安裝不再需要的衝突套件後重試,或自行撰寫 Python 腳本下載、部署純 Python 套件並管理相依套件。呼叫 pythona.packages.install() 仍遵循以上規則;自行安裝也受 Python 和 iOS 的相容性限制。更換已匯入的套件後,請重新啟動 Pythona。

安裝的第三方函式庫會透過 iCloud 同步嗎?

不會。透過套件管理員安裝的第三方函式庫只儲存在目前裝置上。本機、iCloud 和外部資料夾中的腳本都可以使用這些函式庫。

透過 iCloud 同步專案後,需要在另一台裝置上另外安裝專案依賴的函式庫。

Pythona 提供哪些 iOS 功能函式庫?怎麼呼叫?

Pythona 內建 cocoa-py,其中 scene 用於遊戲、動畫與互動圖形;photos 用於透過系統相簿選取或儲存照片、影片;audio 提供音訊播放、錄音和音效處理;coreml 用於載入 Core ML 模型並在裝置上執行推論。

透過 pythona 可以使用 App 本身的功能:用 pythona.packages 安裝第三方套件,用 pythona.ai 建立、讀取和更新自訂 AI 供應商的設定。

需要呼叫更多 iOS 系統功能時,建議使用 rubicon-objc,透過 Python 呼叫 iOS 原生 API,包括用 UIKit 建立原生介面。可以參考 App 內的裝置資訊和 WKWebView 範例。

cocoa-py 已開源,也支援 macOS,實際功能因平台而異。原始碼與 API 文件可在 GitHub 查看,歡迎提交 Issue 或 Pull Request。

查看 cocoa-py 原始碼與文件

開發遊戲或圖形介面,建議使用什麼?

2D 遊戲、動畫和音訊播放建議使用 pygame(App 內建 pygame-ce)。pygame.mixer 可以單獨播放音樂或音效,無須建立視窗。

製作介面或網頁遊戲,可以使用 HTML、CSS 和 JavaScript,並在 Pythona 中透過 WKWebView 顯示。網頁內容便於跨平台重複使用。移植到其他平台時,需要調整 WKWebView 的顯示程式碼,以及網頁與 Python 或 iOS 功能互動的程式碼。

需要 iOS 原生介面時,可以透過 rubicon-objc 呼叫 UIKit。使用 UIKit 的程式碼仍然依賴 iOS。

Pythona 也支援 Tkinter,適合執行既有的 Tkinter 腳本或製作簡單工具。介面採用傳統桌面風格;如果更重視行動裝置的外觀和互動,建議使用網頁介面,或透過 rubicon-objc 呼叫 UIKit。App 內有對應範例。

04

檔案

如何與電腦交換檔案?

程式碼專案建議使用 Git:在 Pythona 和電腦上複製同一個遠端儲存庫,修改後提交並推送,再在另一端提取更新。

也可以透過 iCloud Drive 同步檔案,或使用系統分享功能匯出檔案;與 Mac 交換檔案時,也可以使用 AirDrop。

也可以在 App 中啟用「檔案伺服器」,讓位於同一區域網路的電腦透過瀏覽器開啟 App 顯示的位址,上傳和下載檔案。檔案伺服器沒有登入密碼,請在可信任的網路中使用,傳輸完成後停止服務。

05

AI

可以在 Python 中使用哪些本機 AI 模型?

MLX:App 內建 MLX,可搭配 mlx-lm 執行相容的語言模型。可以參考 App 內的 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 用法

怎麼將本機模型串接至 AI 助手?

可以使用開源專案 Pythona AI Setup,為 Apple Foundation Models 或 MLX 本機模型建立 AI 助手設定。

在 Pythona 中複製專案,執行專案根目錄的 main.py,依頁面提示選擇模型和工具並新增設定,然後在 AI 助手設定中選擇對應的連線。詳細步驟請見專案 README。

MLX 模型需要支援工具呼叫,才能使用助手的檔案讀寫、執行 Python 等工具;不支援工具呼叫的模型可以關閉所有工具後用於對話。

查看 Pythona AI Setup 專案與使用說明

AI 助手會讀寫哪些檔案?

AI 助手以目前對話的工作區作為預設專案目錄。在新對話傳送第一則訊息前,可以透過「切換工作區」選擇資料夾。切換檔案瀏覽器中的目錄不會改變既有對話的工作區。

AI 助手也可以呼叫 run_python 執行 Python 程式碼,讀取 App 內的檔案和資料夾,包括工作區以外的內容。這類存取不受所選工作區範圍限制。

AI 助手支援 AGENTS.md 嗎?

支援。在目前對話的工作區根目錄建立 AGENTS.md,可以寫入專案說明、程式碼風格和其他協作要求。

助手會在處理每則新訊息時自動讀取該檔案;修改並儲存後,下次傳送訊息時即可生效。只自動載入工作區根目錄的 AGENTS.md,不會自動合併子目錄中的同名檔案。

自訂供應商(JS Provider)有什麼用途?

透過自訂供應商,可以用 JavaScript 自行串接 AI 服務,使用內建供應商尚未支援的 API、驗證方式或服務功能,也可以加入自訂工具。

這裡使用 JavaScript,是為了把 AI 服務的連線、驗證和回應處理放在獨立的執行環境中,避免干擾使用者的 Python 環境。

自訂工具可以呼叫外部服務,也可以封裝 run_python,讓助手執行 Python 腳本,或透過腳本呼叫 iOS 功能。

如果內建供應商已經滿足需求,就不需要額外設定。需要擴充時,可以參考設定頁提供的 JavaScript API 和範例。

06

購買與還原

購買 Pro 後,換裝置還需要重新購買嗎?

不需要。在其他裝置的 App Store 中登入購買時使用的同一 Apple 帳號,即可繼續使用已購買的 Pro。

在新裝置上安裝或重新安裝 Pythona 後,如果仍顯示試用提示或購買頁面,可能是購買狀態尚未同步。請連接網路,在購買頁面點一下「還原購買項目」。

還原購買項目不會收費。即使再次點選購買,同一 Apple 帳號對已擁有的同一 Pro 項目也不會被重複扣款。

切換 Apple 帳號後,為什麼 Pro 無法使用?

Pro 購買項目會與購買時使用的 App Store 帳號連結。切換到另一個未購買 Pro 的帳號後,可能無法使用 Pro。請在 App Store 中切回購買時的帳號,再於 Pythona 中點一下「還原購買項目」。

如果頻繁切換 App Store 帳號影響了你使用 Pythona,請聯絡我們。

還有其他問題?

回報問題時,請附上 App 版本、操作步驟和完整的錯誤訊息。

聯絡開發者