昨天終於在 Pi 400 主機上完成 Python 套件安裝 (虛擬環境), 參考 :
但我在匯入 pyfolio 套件卻出現無效指令的錯誤, 而且直接跳出 Python 環境 :
(myenv) pi@raspberrypi:~ $ python
Python 3.11.2 (main, Apr 28 2025, 14:11:48) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyfolio as pf
無效指令
(myenv) pi@raspberrypi:~ $
詢問 ChatGPT 答覆是 pyfolio 最後更新為 2019 年, 只支援到 Python ≤3.8, 且已經停止維護, 可能是版本太舊了, 匯入時觸發了底層 C 擴充模組崩潰 (Segmentation Fault), 或者是內部引用的依賴套件例如 empyrical, matplotlib, pandas 等與 Python 3.11 不相容導致解譯器中止跳出.
ChatGPT 建議移除 pyfolio, 改安裝它的 fork 套件 pyfolio-reloaded, 但其實我昨天兩個套件都有安裝, 可能匯入時是以 pyfolio 為優先才會出問題. 所以只要把 pyfolio 移除即可, 這樣匯入 pyfolio 時應該就會從 pyfolio-reloaded 匯入了 :
(myenv) pi@raspberrypi:~ $ pip uninstall -y pyfolio
Found existing installation: pyfolio 0.9.2
Uninstalling pyfolio-0.9.2:
Successfully uninstalled pyfolio-0.9.2
可見已順利匯入 pyfolio 了 (pyfolio-reloaded 匯入時仍然要使用 pyfolio 這個套件名稱). 但是 pyfoio-reloaded 移除了 __version__ 屬性 :
(myenv) pi@raspberrypi:~ $ python
Python 3.11.2 (main, Apr 28 2025, 14:11:48) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyfolio as pf
>>> pf.__version__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'pyfolio' has no attribute '__version__'
可以用 importlib.metadata.version() 函式才能檢視其版本 :
>>> from importlib.metadata import version
>>> print(version("pyfolio-reloaded"))
0.9.9
或者使用 pip show 指令查詢亦可 :
(myenv) pi@raspberrypi:~ $ pip show pyfolio-reloaded
Name: pyfolio-reloaded
Version: 0.9.9
Summary: Performance and risk analysis of financial portfolios with Python
... (略) ...
關於 pyfolio 用法參考 :
注意, pyfolio 必須在 Jupyter Lab 或 Colab 等網頁環境執行才能看到輸出結果.
沒有留言 :
張貼留言