- 适用于 JDK 23 的 GraalVM(最新)
- 适用于 JDK 24 的 GraalVM(抢先体验版)
- 适用于 JDK 21 的 GraalVM
- 适用于 JDK 17 的 GraalVM
- 归档
- 开发版本
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 的 GraalPy 和 GraalPy 社区版 提供。
-
基于 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 安装文件。
- 找到与模式 graalpy-XX.Y.Z-linux-amd64.tar.gz 或 graalpy-XX.Y.Z-linux-aarch64.tar.gz(取决于您的平台)匹配的下载文件并下载。
- 解压缩文件并更新您的
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 安装文件。
- 找到与模式 graalpy-XX.Y.Z-macos-amd64.tar.gz 或 graalpy-XX.Y.Z-macos-aarch64.tar.gz(取决于您的平台)匹配的下载文件并下载。
- 删除隔离属性。
sudo xattr -r -d com.apple.quarantine /path/to/graalpy
例如
sudo xattr -r -d com.apple.quarantine ~/.pyenv/versions/graalpy-24.1.0
- 解压缩文件并更新您的
PATH
环境变量以包含 graalpy-XX.Y.Z-macos-amd64/bin(或 graalpy-XX.Y.Z-macos-aarch64/bin)目录。
Windows #
- 从 GitHub 发布 找到并下载与模式 graalpy-XX.Y.Z-windows-amd64.tar.gz 匹配的压缩 GraalPy 安装文件。
- 解压缩文件并更新您的
PATH
变量以包含 graalpy-XX.Y.Z-windows-amd64/bin 目录。
Windows 限制
GraalPy 的 Windows 分发版比其 Linux 或 macOS 版本有更多限制,因此并非所有功能和包都可用。
它具有以下已知问题
- JLine 将 Windows 视为一个哑终端,在 REPL 中没有自动完成功能和有限的编辑功能
- REPL 中的交互式
help()
不起作用 - 在虚拟环境中
- graalpy.cmd 和 graalpy.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 解释器一样。
- 通过运行以下命令使用 GraalPy 创建一个虚拟环境
graalpy -m venv <venv-dir>
例如
graalpy -m venv ~/.virtualenvs/graalpy-24.1.0
- 在您的 shell 会话中激活该环境
source <venv-dir>/bin/activate
例如
source ~/.virtualenvs/graalpy-24.1.0/bin/activate
虚拟环境中提供了多个可执行文件,包括:python
、python3
和 graalpy
。
注意:要停用 Python 环境(并返回到您的 shell),请运行
deactivate
。
在使用虚拟环境时,pip
包安装程序可用。GraalPy 的 pip
实现可能会选择与最新版本不同的包版本,以防它提供修补程序以使这些版本更好地工作。