GraalPy 作為 CPython 的替代方案

選擇 GraalPy 執行時 #

GraalPy 提供一個與 Python 3.11 相容的執行時。主要目標是支援 PyTorch、SciPy 及其組成庫,以及使用來自豐富 Python 生態系統的其他資料科學和機器學習庫。GraalPy 作為預先編譯的原生執行檔發布,體積小巧。

GraalPy 提供以下功能

  • CPython 的替代方案。使用 GraalPy 作為 CPython 的替代方案。它是最相容的,因為它最接近 CPython 安裝套件的結構。
  • Python 應用程式的獨特部署模式。在 GraalPy 上將 Python 應用程式編譯為單個原生二進位檔,其中嵌入了所有需要的資源。
  • 存取 GraalVM 的語言生態系統和工具。GraalPy 可以運行許多標準 Python 工具以及來自 GraalVM 生態系統的工具。

GraalPy 發行版本 #

GraalPy 可用作在 Oracle GraalVM 上建置的 GraalPyGraalPy Community

  • 在 Oracle GraalVM 之上建置的 GraalPy 提供最佳體驗:它具有額外的最佳化,速度顯著更快,記憶體效率更高。它根據 GraalVM 免費條款和條件 (GFTC) 授權,與 Oracle GraalVM 相同,允許任何使用者使用,包括商業和生產用途。允許重新分發,只要不收取費用。

  • GraalPy Community 是在 GraalVM Community Edition 之上建置的,並且是完全開源的。

GraalPy 的 Oracle 和 Community 發行版本都有兩種語言執行時選項

  • 原生
    • GraalPy 預先編譯為原生執行檔。
    • 這表示您不需要 JVM 來運行 GraalPy,而且它體積小巧。
  • JVM
    • 您可以輕鬆利用 Java 的互通性。
    • 峰值效能可能高於原生選項。

GraalPy 識別 #

使用一般模式graalpy(-community)(-jvm)-<版本>-<作業系統>-<架構>,可以識別四種 GraalPy 執行時

  Oracle 社群
原生 graalpy-<版本>-<作業系統>-<架構> graalpy-community-<版本>-<作業系統>-<架構>
JVM graalpy-jvm-<版本>-<作業系統>-<架構> graalpy-community-jvm-<版本>-<作業系統>-<架構>

比較 #

執行時 原生 (預設) JVM
啟動時間 更快 更慢
達到峰值效能的時間 更快 更慢
峰值效能 (也考慮 GC) 良好 最佳
Java 互通性 需要設定 運作

安裝 GraalPy #

注意:GraalPy 發布與在 Pyenv 上可用之間會有延遲。

Linux #

在 Linux 上安裝 GraalPy 的最簡單方法是使用 Pyenv (Python 版本管理員)。若要使用 Pyenv 安裝 24.1.0 版本,請執行以下命令

pyenv install graalpy-24.1.0
pyenv shell graalpy-24.1.0

在執行 pyenv install 之前,您可能需要更新 pyenv 以包含最新的 GraalPy 版本。

或者,您可以從 GitHub 版本下載壓縮的 GraalPy 安裝檔案。

  1. 找到符合模式graalpy-XX.Y.Z-linux-amd64.tar.gzgraalpy-XX.Y.Z-linux-aarch64.tar.gz (取決於您的平台) 的下載檔案並下載。
  2. 解壓縮檔案並更新您的 PATH 環境變數,以包含 graalpy-XX.Y.Z-linux-amd64/bin (或 graalpy-XX.Y.Z-linux-aarch64/bin) 目錄。

注意:在 Oracle Linux 9 上,還需要安裝 libxcrypt 程式庫,這是 GraalPy 原生執行時所需要的:yum install libxcrypt-compat

macOS #

在 macOS 上安裝 GraalPy 的最簡單方法是使用 Pyenv (Python 版本管理員)。若要使用 Pyenv 安裝 24.1.0 版本,請執行以下命令

pyenv install graalpy-24.1.0
pyenv shell graalpy-24.1.0

在執行 pyenv install 之前,您可能需要更新 pyenv 以包含最新的 GraalPy 版本。

或者,您可以從 GitHub 版本下載壓縮的 GraalPy 安裝檔案。

  1. 找到符合模式graalpy-XX.Y.Z-macos-amd64.tar.gzgraalpy-XX.Y.Z-macos-aarch64.tar.gz (取決於您的平台) 的下載檔案並下載。
  2. 移除隔離屬性。
     sudo xattr -r -d com.apple.quarantine /path/to/graalpy
    

    例如

     sudo xattr -r -d com.apple.quarantine ~/.pyenv/versions/graalpy-24.1.0
    
  3. 解壓縮檔案並更新您的 PATH 環境變數,以包含 graalpy-XX.Y.Z-macos-amd64/bin (或 graalpy-XX.Y.Z-macos-aarch64/bin) 目錄。

Windows #

  1. GitHub 版本找到並下載符合模式 graalpy-XX.Y.Z-windows-amd64.tar.gz 的壓縮 GraalPy 安裝檔案。
  2. 解壓縮檔案並更新您的 PATH 變數,以包含 graalpy-XX.Y.Z-windows-amd64/bin 目錄。

Windows 限制

GraalPy 的 Windows 發行版本比其 Linux 或 macOS 版本有更多限制,因此並非所有功能和套件都可用。

它有以下已知問題

  • JLine 將 Windows 視為啞終端,在 REPL 中沒有自動完成和有限的編輯功能
  • REPL 中的互動式 help() 無法運作
  • 在虛擬環境中
    • graalpy.cmdgraalpy.exe 已損壞
    • 無法直接使用 pip.exe
    • pip 在載入快取檔案時遇到問題,請使用 --no-cache-dir
    • 只能安裝純 Python 二進位輪,不能安裝原生擴充功能或原始碼組建
    • 若要安裝套件,請使用 myvenv/Scripts/python.exe -m pip --no-cache-dir install <pkg>
  • 從 PowerShell 執行比從 CMD 執行更好,各種腳本在後者上會失敗

安裝套件 #

使用 GraalPy 的最佳方式是從 venv 虛擬環境。這會產生包裝器腳本,並使該實作可從 shell 作為標準 Python 直譯器使用。

  1. 執行以下命令,使用 GraalPy 建立虛擬環境
     graalpy -m venv <venv-dir>
    

    例如

     graalpy -m venv ~/.virtualenvs/graalpy-24.1.0
    
  2. 在您的 shell 會話中啟動環境
     source <venv-dir>/bin/activate
    

    例如

     source ~/.virtualenvs/graalpy-24.1.0/bin/activate
    

虛擬環境中有多個可執行檔,包括:pythonpython3graalpy

注意:若要停用 Python 環境 (並返回您的 shell),請執行 deactivate

使用虛擬環境時,可以使用 pip 套件安裝程式。GraalPy 的 pip 實作可能會選擇其他套件版本,而不是最新的版本,以便更好地運作。

與我們聯繫