昨天將 Pi 400 的 Rapberry PI OS (Bookworm) TF 卡換成最新版的 Trixie, 原以為在內建的 Python 3.13 環境下, pandas-ta 等套件的問題就可解決, 但結果卻出乎意料地糟, 舊問題不僅沒解決, 反而因為 Python 版本太新, 某些套件 (例如 Seaborn 與 pandas-ta) 一匯入就讓 Python 3.13 崩潰而跳出 (exit code -4) , 其他套件像 matplotlib 則無問題 :
詢問 ChatGPT, 說可能是因為在 Python 3.13 + ARM64 上的 Seaborn 或其依賴套件不穩定, 導致在某些 API 呼叫中觸發 numpy 或 pandas 的 C extension 崩潰. AI 建議安裝較低版本的 Python, 考慮我的 LG Gram 筆電跑 Python 3.10 安裝各種套件都用得很順 (除了 pandas-ta 須安裝較舊的版本), 所以就叫 ChatGPT 幫我寫了一個一鍵安裝 Python 3.10 的 shell 程式 :
pi@raspberrypi:~ $ nano install-py310.sh
#!/bin/bash
set -e
echo "Updating system..."
sudo apt update
sudo apt install -y \
build-essential checkinstall \
libreadline-dev libncursesw5-dev libssl-dev \
libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev \
libffi-dev zlib1g-dev liblzma-dev libnss3-dev wget
echo "Download Python 3.10.14 source..."
cd /usr/src
sudo wget https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz
sudo tar xzf Python-3.10.14.tgz
cd Python-3.10.14
echo "Configuring, this may take some time..."
sudo ./configure --enable-optimizations --with-ensurepip=install
echo "Compiling (use all cores)..."
sudo make -j$(nproc)
echo "Installing Python 3.10 (without replacing system python)..."
sudo make altinstall
echo "Done! Installed python3.10 and pip3.10"
python3.10 --version
pip3.10 --version
先用 chmod 指令更改權限為可執行 :
pi@raspberrypi:~ $ chmod +x install-py310.sh
執行此 shell 程式安裝 Python 3.10 (編譯安裝約需 20 分鐘) :
pi@raspberrypi:~ $ ./install-py310.sh
... (略) ...
Done! Installed python3.10 and pip3.10
Python 3.10.14
pip 23.0.1 from /usr/local/lib/python3.10/site-packages/pip (python 3.10)
這樣就完成 Python 3.10 的安裝了, 其執行指令是 python3.10 :
pi@raspberrypi:~ $ ls /usr/local/bin/python*
/usr/local/bin/python3.10 /usr/local/bin/python3.10-config
自己編譯安裝的 Python 放在 /usr/local/bin 下, 系統內建的則是放在 /usr/bin 下 :
pi@raspberrypi:~ $ ls /usr/bin/python*
/usr/bin/python /usr/bin/python3.13 /usr/bin/python3-config
/usr/bin/python3 /usr/bin/python3.13-config /usr/bin/python-dotenv
用 python3.10 指令建立一個虛擬環境 myenv310 :
pi@raspberrypi:~ $ python3.10 -m venv myenv310
pi@raspberrypi:~ $ source myenv310/bin/activate
(myenv310) pi@raspberrypi:~ $ python
Python 3.10.14 (main, Nov 19 2025, 21:45:00) [GCC 14.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
檢視儲存空間 :
(myenv310) pi@raspberrypi:~ $ df -h
檔案系統 容量 已用 可用 已用% 掛載點
udev 1.6G 0 1.6G 0% /dev
tmpfs 760M 9.5M 750M 2% /run
/dev/mmcblk0p2 59G 12G 44G 21% /
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 3.10 之前是 45GB, 可見 Python 3.10 用掉約 1GB.
接下來在 Python 3.10 虛擬環境安裝工作所需的套件 :
1. 資料科學基礎套件 :
pip install numpy==1.26.4 (mplfinance 要求)
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
注意, 為了避免安裝 kbar 時刪除最新的 numpy, 重新下載編譯 numpy 1.26.4 版耗費時間, 此處直接指定安裝 numpy 1.26.4 版.
2. 深度學習框架 :
pip install torch torchvision torchaudio
3. Web UI :
pip install django
pip install streamlit
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 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
最後安裝 pandas-ta, 因 PyPi 上是要求 Python >= 3.12 的最新版 0.4.71b, 所以要從 Source Forge 下載支援 Python 3.10 的 pandas-ta 0.3.14b 版 Python 原始碼自行 build 為 whl 檔後安裝 :
參考 :
先建立 Python 3.10 的虛擬環境 :
pi@raspberrypi:~ $ python3.10 -m venv myenv310
pi@raspberrypi:~ $ source myenv310/bin/activate
(myenv310) pi@raspberrypi:~ $
將下載的 zip 檔解壓縮, 把原始碼資料夾更名為 pandas-ta-0.3.14b 後進去此資料夾 :
(myenv310) pi@raspberrypi:~/ cd 下載
(myenv310) pi@raspberrypi:~/下載 $ cd pandas-ta-0.3.14b
先安裝 build 套件 :
(myenv310) pi@raspberrypi:~/下載/pandas-ta-0.3.14b $ pip install build
Collecting build
Downloading build-1.3.0-py3-none-any.whl.metadata (5.6 kB)
Requirement already satisfied: packaging>=19.1 in /home/pi/myenv310/lib/python3.10/site-packages (from build) (25.0)
Collecting pyproject_hooks (from build)
Downloading pyproject_hooks-1.2.0-py3-none-any.whl.metadata (1.3 kB)
Requirement already satisfied: tomli>=1.1.0 in /home/pi/myenv310/lib/python3.10/site-packages (from build) (2.3.0)
Downloading build-1.3.0-py3-none-any.whl (23 kB)
Downloading pyproject_hooks-1.2.0-py3-none-any.whl (10 kB)
Installing collected packages: pyproject_hooks, build
Successfully installed build-1.3.0 pyproject_hooks-1.2.0
執行 python -m build :
(myenv310) pi@raspberrypi:~/下載/pandas-ta-0.3.14b $ python -m build
... (略) ...
build 完成後進入 dist 子資料夾 :
(myenv310) pi@raspberrypi:~/下載/pandas-ta-0.3.14b $ cd dist
(myenv310) pi@raspberrypi:~/下載/pandas-ta-0.3.14b/dist $ ls -ls
總用量 360
216 -rw-rw-r-- 1 pi pi 219862 11月 20 00:34 pandas_ta-0.3.14b0-py3-none-any.whl
144 -rw-rw-r-- 1 pi pi 144836 11月 20 00:34 pandas_ta-0.3.14b0.tar.gz
可見已建立 whl 檔, 用 pip 安裝即可 :
(myenv310) pi@raspberrypi:~/下載/pandas-ta-0.3.14b/dist $ pip install pandas_ta-0.3.14b0-py3-none-any.whl
Processing ./pandas_ta-0.3.14b0-py3-none-any.whl
Requirement already satisfied: pandas in /home/pi/myenv310/lib/python3.10/site-packages (from pandas-ta==0.3.14b0) (2.3.3)
Requirement already satisfied: numpy>=1.22.4 in /home/pi/myenv310/lib/python3.10/site-packages (from pandas->pandas-ta==0.3.14b0) (1.26.4)
Requirement already satisfied: python-dateutil>=2.8.2 in /home/pi/myenv310/lib/python3.10/site-packages (from pandas->pandas-ta==0.3.14b0) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in /home/pi/myenv310/lib/python3.10/site-packages (from pandas->pandas-ta==0.3.14b0) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in /home/pi/myenv310/lib/python3.10/site-packages (from pandas->pandas-ta==0.3.14b0) (2025.2)
Requirement already satisfied: six>=1.5 in /home/pi/myenv310/lib/python3.10/site-packages (from python-dateutil>=2.8.2->pandas->pandas-ta==0.3.14b0) (1.17.0)
Installing collected packages: pandas-ta
Successfully installed pandas-ta-0.3.14b0
進入 Python 互動環境 :
(myenv310) pi@raspberrypi:~ $ python
Python 3.10.14 (main, Nov 19 2025, 21:45:00) [GCC 14.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas_ta as ta
>>> ta.version
'0.3.14b0'
可見 pandas-ta 已可正常運行
檢視儲存空間 :
(myenv310) pi@raspberrypi:~ $ df -h
檔案系統 容量 已用 可用 已用% 掛載點
udev 1.6G 0 1.6G 0% /dev
tmpfs 760M 9.5M 750M 2% /run
/dev/mmcblk0p2 59G 14G 42G 25% /
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 16M 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 套件用掉約 2GB 空間.
如果使用 Thonny 開發測試, 因它預設的解譯器是系統的 Python 3.13, 而我們上面安裝的套件都在 Python 3.10 的虛擬環境 myenv310 下, 直接匯入這些套件都會 not found, 必須將解譯器更改為 myenv310 下的 python3.10 才行, 按 "工具" 選單點選 "選項" :
切到 "直譯器" 頁籤, 按 Python 可執行檔右邊的三個小點按鈕, 點選 /hom/pi/myenv310/bin 下面的 python3.10 按確認即可 :
這樣 Thonny 就會用 Python 3.10 虛擬環境去執行 Python 程式了. 至於之前建立的 Python 3.13 虛擬環境 myenv 與裡面所安裝的套件就留著, 等未來那些套件支援 Python 3.13 時再下載更新.
2025-11-21 補充 :
安裝完所有套件後測試, 發現問題還是一樣, 出現 "無效指令" 後跳出 Python :
pi@raspberrypi:~ $ source myenv310/bin/activate
(myenv310) pi@raspberrypi:~ $ python
Python 3.10.14 (main, Nov 19 2025, 21:45:00) [GCC 14.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas_ta as ta
無效指令
(myenv310) pi@raspberrypi:~ $



沒有留言 :
張貼留言