environment_check.py 時直接崩潰,拋出 PermissionError [WinError 5] Access is denied: 'C:\Users\force'。
AI NotebookLM Runtime Lab v2 本地端部署與實戰排錯日誌
本文件詳細記載了將 AI NotebookLM v2 整合地端伺服器移植至 Windows 電腦時所遭遇的 6 項核心挑戰與解決方案。透過對 Python 代碼、依賴庫、Port 配置與 Windows 系統機制的精確修復,我們已實現了本地伺服器、CLI 與外部 ngrok 隧道的完美對接。
以下記載的所有部署挑戰、程式碼修改(包含跨平台路徑防呆、免登入狀態放行、UTF-8 終端機重組、orjson 依賴補齊以及 netstat 自動殺行程衝突管理),皆已在 v3.01 版本中預設整合完成。您在新環境部署本專案時,無須再手動修改任何程式碼!
environment_check.py 時直接崩潰,拋出 PermissionError [WinError 5] Access is denied: 'C:\Users\force'。
v2/config/config.json 設定檔中,寫入了原作者在 macOS 上的絕對路徑(如 /Users/force/...)。Windows 執行時嘗試在不存在且無權限的 C:\Users\force 目錄下建立資料夾而發生崩潰。
app_config.py 當中新增了跨平台路徑校正,若是在 Windows 上執行卻讀取到 Unix 格式的絕對路徑,程式會自動忽略並使用本機實體路徑重新生成乾淨的相對路徑設定檔。
falo_launcher.py 都會判定 Port 8765 被佔用,進而無法將其關閉,被迫使用備用埠口導致設定混亂。
/api/status 回傳的 JSON 判定是否為本專案行程。但由於該 API 預設需要登入驗證(HTTP 401),未登入時會拋出異常中斷,導致啟動器誤判。
v2/runtime_server.py 中的 do_GET 方法,放行對 /api/status 的免驗證 GET 請求。現在啟動器能正常獲取 PID 並在重啟時自動關閉舊進程。
UnicodeEncodeError: 'charmap' codec can't encode characters: character maps to <undefined>。
ask_helper.py 與 gemini_helper.py 輸出結果時使用原生中文字元。但在 Windows 系統中,終端機預設編碼(如 cp950)無法對映中文字元,導致 print 拋出編碼異常而直接崩潰。
ask_helper.py 與 gemini_helper.py 開頭強制將 sys.stdout 的輸出流重新配置為 utf-8。runtime_server.py,在呼叫 subprocess.run 時明確指定 encoding="utf-8" 進行解碼。
ModuleNotFoundError: No module named 'orjson'。
gemini_helper.py 調用的 gemini_webapi 模組依賴高效能 JSON 解析庫 orjson,但在原始部署包提供的 requirements.txt 中遺漏了這個套件。
v2/requirements.txt。在新環境執行 pip install -r requirements.txt 時會一併自動安裝。
notebooklm login --fresh 以嘗試重新登入 CLI 時,程式瞬間閃退,且背景沒有任何反應。
ERR_NGROK_8012。
8888 Port,而我們剛剛啟動的地端 Python 伺服器卻是運行在預設的 8765 Port。
falo_launcher.py 內新增 get_any_process_on_port 的邏輯,如果發現 8765 埠口被任何不明行程佔用,會自動使用系統 `netstat -aon` 獲取其 PID 並調用 taskkill 將其強制釋放,確保服務埠口完全對齊。
http://127.0.0.1:8765!