类别:

:doc:`/sql-reference/functions-system`(系统函数)

SYSTEM$RESOLVE_PYTHON_PACKAGES

返回指定 Python 包的解析依赖项及其版本的列表。此函数支持来自 Anaconda 和 Artifact Repository (PyPI) 的包。

语法

SYSTEM$RESOLVE_PYTHON_PACKAGES( '<python_version>', '<package_spec_string>', ['<artifact_repository_name>'] )
Copy

实参

python_version

指定 Python 运行时版本的字符串(例如 '3.12')。

package_spec_string

采用 PACKAGES 子句格式的包规范(例如 $$('numpy>=1.20.0', 'pandas==1.3.0')$$)。使用 $$()$$ 仅返回基础包(Python 运行时及其依赖项)。

artifact_repository_name

可选。指定 Artifact Repository 名称的字符串(例如 'snowflake.snowpark.pypi_shared_repository')。如果未提供或为空,则使用默认的 Anaconda 存储库。

返回

返回一个包含已解析包及其依赖项的 JSON 数组。数组中的每个元素都是一个采用如下格式的字符串: <package_name>==<version_name>。结果始终包含基础包(例如 Python 运行时和系统库)。

访问控制要求

任何用户都可以调用此函数。无需特殊权限。

使用说明

  • 与仅适用于 Anaconda 包的 SHOW_PYTHON_PACKAGES_DEPENDENCIES 不同,SYSTEM$RESOLVE_PYTHON_PACKAGES 适用于来自 Anaconda 和 Artifact Repository (PyPI) 的包。

  • 该函数在内部创建一个临时 UDF 以解析包依赖关系,并会自动进行清理。

  • 当您需要确定包策略中包含的包的所有依赖项时,请使用此函数。

示例

示例 1:从 Anaconda 解析包

以下示例返回来自默认 Anaconda 存储库、基于 Python 3.12 运行时的 numpypandas Python 包的依赖项列表:

SELECT SYSTEM$RESOLVE_PYTHON_PACKAGES('3.12', $$('numpy>=1.20.0', 'pandas==1.3.0')$$);
Copy

结果是依赖项及其版本的列表:

["_libgcc_mutex==0.1", "_openmp_mutex==5.1", "blas==1.0", "ca-certificates==2024.9.24",
"intel-openmp==2023.1.0", "libffi==3.4.4", "libgcc-ng==11.2.0", "numpy==1.24.3",
"pandas==1.5.3", "python==3.12.20", "readline==8.2", "sqlite==3.45.3", ...]

示例 2:解析来自 Artifact Repository (PyPI) 的包

以下示例解析来自 PyPI Artifact Repository 的 scikit-learn 包:

SELECT SYSTEM$RESOLVE_PYTHON_PACKAGES('3.12', $$('scikit-learn')$$, 'snowflake.snowpark.pypi_shared_repository');
Copy

示例 3:仅获取基础包

以下示例仅返回 Python 3.12 的基础包:

SELECT SYSTEM$RESOLVE_PYTHON_PACKAGES('3.12', $$()$$);
Copy

结果包含 Python 运行时和系统依赖项:

["_libgcc_mutex==0.1", "ca-certificates==2024.9.24", "libffi==3.4.4",
"openssl==3.0.15", "python==3.12.20", "readline==8.2", ...]

另请参阅

语言: 中文