2025年11月19日 星期三

樹莓派 Pi 400 改裝 Rapberry PI Trixie 作業系統

由於 Rapberry Pi OS Bookworm 的 Python 是 3.11 版, 某些套件例如 pandas-ta 要求 >=3.12 無法安裝, 因此決定打掉重來, 改燒錄 Trixie 版, 然後重複上周在 Bookworm 上的設定, 參考 :


遠端桌面連線的重點是, Anydesk 與 VNC 必須是 X11 桌面才能連線, 所以安裝完這兩個套件包後, 要用 sudo raspi-config 的 advanced options/interface options  中, 將預設的 Wayland 桌面改成 X11; 然後到 interface options/VNC 啟用 VNC 功能, 這樣才能順利連線, 否則會出現如下錯誤 (以 Anydesk 為例) :  




安裝完檢查檔案系統容量還有 48GB : 

pi@raspberrypi:~ $ df -h    
檔案系統        容量  已用  可用 已用% 掛載點
udev            1.6G     0  1.6G    0% /dev
tmpfs           760M  9.5M  750M    2% /run
/dev/mmcblk0p2   59G  8.1G   48G   15% /
tmpfs           1.9G  488K  1.9G    1% /dev/shm
tmpfs           5.0M   12K  5.0M    1% /run/lock
tmpfs           1.0M     0  1.0M    0% /run/credentials/systemd-journald.service
tmpfs           1.9G   25M  1.9G    2% /tmp
/dev/mmcblk0p1  510M  103M  408M   21% /boot/firmware
tmpfs           380M   84K  380M    1% /run/user/1000
tmpfs           1.0M     0  1.0M    0% /run/credentials/getty@tty1.service

檢查 Python 版本為 v3.13.5 版, 這樣應該夠新的了 :

pi@raspberrypi:~ $ python   
Python 3.13.5 (main, Jun 25 2025, 18:55:22) [GCC 14.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

與 Bookworm 不同的是, 每次開啟瀏覽器時會出現 keyring 密碼設定視窗 : 




詢問 ChatGPT 原來在 Linux 系統中當某個應用程式 (例如瀏覽器) 想安全地儲存密碼 (例如 Google 登入資訊) 都會詢問是否要建立一個預設密鑰圈 (keyring), 只要把 Keyring 密碼設成樹莓派登入密碼, 這樣每次登入樹莓派時Keyring 就會自動解鎖, 不會再跳 keyring 設定視窗. 

(補充) :

有些套件例如 pandas, numpy, pandas-ta, 與 yfinance 等不是純 Python, 而是 C extension/Cython 編譯的套件, 需先用 apt 安裝開發套件與編譯依賴 :

sudo apt install -y python3.13-venv python3.13-dev build-essential libssl-dev zlib1g-dev libncurses5-dev libncursesw5-dev libreadline-dev libffi-dev libsqlite3-dev libbz2-dev wget curl llvm

與在 Bookworm 一樣, 由於 PEP 668 的限制, 已不允許直接在系統的 Python 3 環境 (/usr/lib/python3/) 中安裝套件, 以免使用者用 pip 覆蓋掉用 apt 安裝的 Python 系統套件, 或者出現版本衝突問題, 所以我建立了一個名為 myenv 的虛擬環境來安裝常用 Python 套件 :

pi@raspberrypi:~ $ python -m venv myenv  
pi@raspberrypi:~ $ source ~/myenv/bin/activate   
(myenv) pi@raspberrypi:~ $ 

為了避免相依套件複寫, 舊版本覆蓋新版本, 套件安裝順序重新安排如下 : 


1. 資料科學基礎套件 : 

pip install numpy
pip install pandas
pip install scipy
pip install matplotlib
pip install seaborn
pip install bokeh
pip install plotly
pip install altair
pip install scikit-learn


2. 深度學習框架 : 

pip install torch torchvision torchaudio
pip install tflite-runtime

註 : PyTorch 官方有釋出 ARM64 CPU 版本的 wheel, 可用 pip 直接安裝, 資源要求低, 總共約需 300~400 MB 空間, 可做推論與小模型訓練, 大模型訓練可能會吃光 4GB 記憶體. TensorFlow 官方沒有釋出 ARM64 CPU wheel 版本, 須自行編譯且容易失敗, 僅適合安裝推論用的 tflite-runtime, 這是 TensorFlow Lite 的最小 Python runtime, 輕量幾乎無依賴. (實測無法安裝 tflite-runtime, 它僅支援到 Python 3.10).


3. Web UI : 

pip install django
pip install streamlit (會造成 Python 執行環境崩潰)
pip install gradio


4. 爬蟲 : 

pip install html5lib
pip install selenium
pip install scrapy


5. 量化投資 : 

pip install yfinance
pip install twstock
pip install mplfinance
pip install ta
pip install pandas-ta
pip install kbar
pip install backtrader
pip install pyfolio-reloaded


6. Bot 套件 : 

pip install line-bot-sdk
pip install python-telegram-bot


7. LLM 套件 : 

pip install openai
pip install google-generativeai


8. 開發工具 : 

pip install jupyterlab

以上安裝仍出現如下覆蓋現象 :
  • 安裝 streamlit 時 : altair 6.0.0 被 5.5.0 覆蓋. 
  • 安裝 gradio 時 : pillow-12.0.0 被 11.3.0 覆蓋.
  • 安裝 kbar 時 : numpy-2.3.5 被 1.26.4 覆蓋 (因 mplfinance 尚未支援 numpy 2).
  • 安裝 pyfolio-reloaded 時 : peewee-3.18.3 被 3.17.3 覆蓋.
  • 安裝 google-generativeai 時 : protobuf-6.33.1 被 5.29.5 覆蓋.
檢視儲存空間 :

(myenv) pi@raspberrypi:~ $ df -h  
檔案系統        容量  已用  可用 已用% 掛載點
udev            1.6G     0  1.6G    0% /dev
tmpfs           760M  9.5M  750M    2% /run
/dev/mmcblk0p2   59G   11G   45G   20% /
tmpfs           1.9G  488K  1.9G    1% /dev/shm
tmpfs           5.0M   12K  5.0M    1% /run/lock
tmpfs           1.0M     0  1.0M    0% /run/credentials/systemd-journald.service
tmpfs           1.9G   14M  1.9G    1% /tmp
/dev/mmcblk0p1  510M  103M  408M   21% /boot/firmware
tmpfs           380M   88K  380M    1% /run/user/1000
tmpfs           1.0M     0  1.0M    0% /run/credentials/getty@tty1.service

可見安裝這些 Python 套件吃掉了大概 3GB 容量. 


2025-11-22 補充 :

在一口氣安裝完上面全部套件後, 進入 Python REPL 互動環境匯入部分套件例如 numpy, pandas 等會出現 REPL 崩潰跳出 Python 環境現象, 經過幾天摸索, 逐一安裝各套件測試, 終於抓到兇手了 : streamlit, 它的依賴套件的 C extension 與 Pi 400 Trixie 編譯的 Python 3.13 ABI / CPU 指令集不完全相容, 所以將 streamlit 從套件列表中移除. 

沒有留言 :