GraalPy 作为 CPython 替代品

选择 GraalPy 运行时 #

GraalPy 提供了一个符合 Python 3.11 的运行时。主要目标是支持 PyTorch、SciPy 及其组成库,以及与来自丰富 Python 生态系统的其他数据科学和机器学习库一起使用。GraalPy 作为提前编译的原生可执行文件分发,体积小巧。

GraalPy 提供以下功能

  • CPython 的替代品。使用 GraalPy 替代 CPython。它是最兼容的,因为它最接近 CPython 安装包的结构。
  • Python 应用程序的独特部署模式。将 Python 应用程序在 GraalPy 上编译为 单个原生二进制文件,其中包含所有必需的资源。
  • 访问 GraalVM 的语言生态系统和工具。GraalPy 可以运行许多标准 Python 工具以及来自 GraalVM 生态系统的工具。

GraalPy 分发版 #

GraalPy 可作为 基于 Oracle GraalVM 的 GraalPyGraalPy 社区版 提供。

  • 基于 Oracle GraalVM 的 GraalPy 提供最佳体验:它具有额外的优化,速度更快,内存效率更高。它根据 GraalVM 免费条款和条件 (GFTC) 许可进行许可,与 Oracle GraalVM 相同,允许任何用户使用,包括商业和生产使用。只要不是以收费方式,就可以重新分发。

  • GraalPy 社区版基于 GraalVM 社区版构建,并且完全开源。

Oracle 和社区版 GraalPy 提供两种语言运行时选项

  • 原生
    • GraalPy 提前编译为原生可执行文件。
    • 这意味着您不需要 JVM 运行 GraalPy,并且它体积小巧。
  • JVM
    • 您可以轻松利用 Java 互操作性。
    • 峰值性能可能比原生选项更高。

GraalPy 识别 #

四个 GraalPy 运行时使用以下模式标识,使用通用模式 graalpy(-community)(-jvm)-<version>-<os>-<arch>

  Oracle 社区
原生 graalpy-<version>-<os>-<arch> graalpy-community-<version>-<os>-<arch>
JVM graalpy-jvm-<version>-<os>-<arch> graalpy-community-jvm-<version>-<os>-<arch>

比较 #

运行时 原生(默认) 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 实现可能会选择与最新版本不同的包版本,以防它提供修补程序以使这些版本更好地工作。

与我们联系