Managing packages and runtime¶
Snowflake Notebooks run inside a pre-built container environment optimized for scalable AI/ML development powered by Snowflake Container Runtime.
Python versions¶
Snowflake Notebooks support Python versions from 3.10 to 3.12. When creating a notebook service, select the Python version that best fits your workload requirements.
Pre-installed Snowflake Container Runtime packages¶
Snowflake Container Runtime version 2.2 includes approximately 100 packages and libraries that support a wide range of ML development tasks inside Snowflake.
The following sections list a curated subset of pre-installed packages (40 entries per environment) available for each Python version of Snowflake Container Runtime version 2.2.
Note
To view the full list of pre-installed packages for your current notebook environment, run pip freeze in a Python cell or in the notebook terminal.
CPU version 2.2¶
The following packages are available for each Python version of CPU version 2.2:
CPU Container Runtime Python 3.10 version 2.2 includes the following packages:
| Package | Version |
|---|---|
| absl-py | 2.3.1 |
| aiobotocore | 2.26.0 |
| aiohappyeyeballs | 2.6.1 |
| aiohttp | 3.13.3 |
| aiohttp-cors | 0.8.1 |
| aioitertools | 0.13.0 |
| aiosignal | 1.4.0 |
| altair | 5.5.0 |
| annotated-doc | 0.0.4 |
| annotated-types | 0.7.0 |
| anyio | 4.12.1 |
| appdirs | 1.4.4 |
| argon2-cffi | 25.1.0 |
| argon2-cffi-bindings | 25.1.0 |
| arrow | 1.4.0 |
| arviz | 0.23.1 |
| asn1crypto | 1.5.1 |
| asttokens | 3.0.1 |
| async-lru | 2.1.0 |
| async-timeout | 5.0.1 |
| attrs | 25.4.0 |
| babel | 2.17.0 |
| bayesian-optimization | 1.5.1 |
| beautifulsoup4 | 4.14.3 |
| bleach | 6.3.0 |
| blinker | 1.9.0 |
| boto3 | 1.41.5 |
| botocore | 1.41.5 |
| cachetools | 5.5.2 |
| CausalPy | 0.5.0 |
| certifi | 2026.1.4 |
| cffi | 1.17.1 |
| charset-normalizer | 3.4.4 |
| click | 8.2.1 |
| clikit | 0.6.2 |
| cloudpickle | 3.1.1 |
| cmdstanpy | 1.3.0 |
| colorama | 0.4.6 |
| colorful | 0.5.8 |
| comm | 0.2.3 |
CPU Container Runtime Python 3.11 version 2.2 includes the following packages:
| Package | Version |
|---|---|
| absl-py | 2.3.1 |
| aiobotocore | 2.26.0 |
| aiohappyeyeballs | 2.6.1 |
| aiohttp | 3.13.3 |
| aiohttp-cors | 0.8.1 |
| aioitertools | 0.13.0 |
| aiosignal | 1.4.0 |
| altair | 5.5.0 |
| annotated-doc | 0.0.4 |
| annotated-types | 0.7.0 |
| anyio | 4.12.1 |
| appdirs | 1.4.4 |
| argon2-cffi | 25.1.0 |
| argon2-cffi-bindings | 25.1.0 |
| arrow | 1.4.0 |
| arviz | 0.23.1 |
| asn1crypto | 1.5.1 |
| asttokens | 3.0.1 |
| async-lru | 2.1.0 |
| attrs | 25.4.0 |
| babel | 2.17.0 |
| bayesian-optimization | 1.5.1 |
| beautifulsoup4 | 4.14.3 |
| better_optimize | 0.2.0 |
| bleach | 6.3.0 |
| blinker | 1.9.0 |
| boto3 | 1.41.5 |
| botocore | 1.41.5 |
| cachetools | 5.5.2 |
| CausalPy | 0.7.0 |
| certifi | 2026.1.4 |
| cffi | 1.17.1 |
| charset-normalizer | 3.4.4 |
| click | 8.2.1 |
| clikit | 0.6.2 |
| cloudpickle | 3.1.1 |
| cmdstanpy | 1.3.0 |
| colorama | 0.4.6 |
| colorful | 0.5.8 |
| comm | 0.2.3 |
CPU Container Runtime Python 3.12 version 2.2 includes the following packages:
| Package | Version |
|---|---|
| absl-py | 2.3.1 |
| accelerate | 1.12.0 |
| aiobotocore | 2.26.0 |
| aiohappyeyeballs | 2.6.1 |
| aiohttp | 3.13.3 |
| aiohttp-cors | 0.8.1 |
| aioitertools | 0.13.0 |
| aiosignal | 1.4.0 |
| altair | 5.5.0 |
| annotated-doc | 0.0.4 |
| annotated-types | 0.7.0 |
| anyio | 4.12.1 |
| appdirs | 1.4.4 |
| argon2-cffi | 25.1.0 |
| argon2-cffi-bindings | 25.1.0 |
| arrow | 1.4.0 |
| arviz | 0.23.1 |
| asn1crypto | 1.5.1 |
| asttokens | 3.0.1 |
| async-lru | 2.1.0 |
| attrs | 25.4.0 |
| babel | 2.17.0 |
| bayesian-optimization | 1.5.1 |
| beautifulsoup4 | 4.14.3 |
| better_optimize | 0.2.0 |
| bleach | 6.3.0 |
| blinker | 1.9.0 |
| boto3 | 1.41.5 |
| botocore | 1.41.5 |
| cachetools | 5.5.2 |
| CausalPy | 0.7.0 |
| certifi | 2026.1.4 |
| cffi | 1.17.1 |
| charset-normalizer | 3.4.4 |
| click | 8.2.1 |
| clikit | 0.6.2 |
| cloudpickle | 3.1.1 |
| cmdstanpy | 1.3.0 |
| colorama | 0.4.6 |
| colorful | 0.5.8 |
GPU version 2.2¶
The following packages are available for each Python version of GPU version 2.2:
GPU Container Runtime Python 3.10 version 2.2 includes the following packages:
| Package | Version |
|---|---|
| absl-py | 2.3.1 |
| accelerate | 1.12.0 |
| aiobotocore | 2.26.0 |
| aiohappyeyeballs | 2.6.1 |
| aiohttp | 3.13.3 |
| aiohttp-cors | 0.8.1 |
| aioitertools | 0.13.0 |
| aiosignal | 1.4.0 |
| airportsdata | 20250909 |
| altair | 5.5.0 |
| annotated-doc | 0.0.4 |
| annotated-types | 0.7.0 |
| anyio | 4.12.1 |
| appdirs | 1.4.4 |
| argon2-cffi | 25.1.0 |
| argon2-cffi-bindings | 25.1.0 |
| arrow | 1.4.0 |
| arviz | 0.23.1 |
| asn1crypto | 1.5.1 |
| astor | 0.8.1 |
| asttokens | 3.0.1 |
| async-lru | 2.1.0 |
| async-timeout | 5.0.1 |
| attrs | 25.4.0 |
| babel | 2.17.0 |
| bayesian-optimization | 1.5.1 |
| beautifulsoup4 | 4.14.3 |
| blake3 | 1.0.8 |
| bleach | 6.3.0 |
| blinker | 1.9.0 |
| boto3 | 1.41.5 |
| botocore | 1.41.5 |
| cachetools | 5.5.2 |
| CausalPy | 0.5.0 |
| certifi | 2026.1.4 |
| cffi | 1.17.1 |
| charset-normalizer | 3.4.4 |
| click | 8.2.1 |
| clikit | 0.6.2 |
| cloudpickle | 3.1.1 |
GPU Container Runtime Python 3.11 version 2.2 includes the following packages:
| Package | Version |
|---|---|
| absl-py | 2.3.1 |
| accelerate | 1.12.0 |
| aiobotocore | 2.26.0 |
| aiohappyeyeballs | 2.6.1 |
| aiohttp | 3.13.3 |
| aiohttp-cors | 0.8.1 |
| aioitertools | 0.13.0 |
| aiosignal | 1.4.0 |
| airportsdata | 20250909 |
| altair | 5.5.0 |
| annotated-doc | 0.0.4 |
| annotated-types | 0.7.0 |
| anyio | 4.12.1 |
| appdirs | 1.4.4 |
| argon2-cffi | 25.1.0 |
| argon2-cffi-bindings | 25.1.0 |
| arrow | 1.4.0 |
| arviz | 0.23.1 |
| asn1crypto | 1.5.1 |
| astor | 0.8.1 |
| asttokens | 3.0.1 |
| async-lru | 2.1.0 |
| attrs | 25.4.0 |
| babel | 2.17.0 |
| bayesian-optimization | 1.5.1 |
| beautifulsoup4 | 4.14.3 |
| better_optimize | 0.2.0 |
| blake3 | 1.0.8 |
| bleach | 6.3.0 |
| blinker | 1.9.0 |
| boto3 | 1.41.5 |
| botocore | 1.41.5 |
| cachetools | 5.5.2 |
| CausalPy | 0.7.0 |
| certifi | 2026.1.4 |
| cffi | 1.17.1 |
| charset-normalizer | 3.4.4 |
| click | 8.2.1 |
| clikit | 0.6.2 |
| cloudpickle | 3.1.1 |
GPU Container Runtime Python 3.12 version 2.2 includes the following packages:
| Package | Version |
|---|---|
| absl-py | 2.3.1 |
| accelerate | 1.12.0 |
| aiobotocore | 2.26.0 |
| aiohappyeyeballs | 2.6.1 |
| aiohttp | 3.13.3 |
| aiohttp-cors | 0.8.1 |
| aioitertools | 0.13.0 |
| aiosignal | 1.4.0 |
| airportsdata | 20250909 |
| altair | 5.5.0 |
| annotated-doc | 0.0.4 |
| annotated-types | 0.7.0 |
| anyio | 4.12.1 |
| appdirs | 1.4.4 |
| argon2-cffi | 25.1.0 |
| argon2-cffi-bindings | 25.1.0 |
| arrow | 1.4.0 |
| arviz | 0.23.1 |
| asn1crypto | 1.5.1 |
| astor | 0.8.1 |
| asttokens | 3.0.1 |
| async-lru | 2.1.0 |
| attrs | 25.4.0 |
| babel | 2.17.0 |
| bayesian-optimization | 1.5.1 |
| beautifulsoup4 | 4.14.3 |
| better_optimize | 0.2.0 |
| blake3 | 1.0.8 |
| bleach | 6.3.0 |
| blinker | 1.9.0 |
| boto3 | 1.41.5 |
| botocore | 1.41.5 |
| cachetools | 5.5.2 |
| CausalPy | 0.7.0 |
| certifi | 2026.1.4 |
| cffi | 1.17.1 |
| charset-normalizer | 3.4.4 |
| click | 8.2.1 |
| clikit | 0.6.2 |
| cloudpickle | 3.1.1 |
Installing additional packages¶
Snowflake Notebooks provides flexible approaches for managing Python packages, ranging from fully managed runtimes to custom container images. Each option offers different tradeoffs in ease of use, governance, customization, and external connectivity. This guide compares the options and highlights the scenarios where each works best.
By default, the Snowflake Container Runtime provides a Python execution environment, preinstalled with ~100 popular DS/ML packages and 1st-party Snowflake packages such as snowflake-snowpark-python. It is optimized for Snowflake-managed CPU and GPU infrastructure and recommended for most users and general-purpose notebook workloads.
Additional ways of installing packages:
| From uploaded files to Workspaces or Stages | Artifact Repositories Preview | External Access Integrations (EAIs) | Custom Images Preview | |
|---|---|---|---|---|
| Description | Install additional packages and import from .whl or .py files stored in Workspaces or Stages. | The Snowflake-managed PyPI repo, or customer-managed, 3rd-party package repositories that can be optionally added. Supports package policies. | EAIs allow secure connection to a defined list of network endpoints outside of Snowflake, including but not limited to external package repositories. When an Artifact Repo is selected, packages will not be installed via EAIs. | Alternative to using the default Snowflake Container Runtime, you can build and manage your own container environments. If selected, it will be used as the base environment. Additional packages can be installed via uploaded files, artifact repos, or EAIs. |
| Accessibility | Private workspaces: Accessible by default. Shared workspaces or Stages: RBAC governed. | RBAC governed. The Snowflake PyPI repo is accessible by the PUBLIC role by default. | RBAC governed. | RBAC governed. |
| Recommended Scenarios | Use when you need additional packages not included in the default runtime or from private/curated repositories. A Shared workspace or a stage is recommended for storing files intended for shared usage amongst users / roles. | Use when you need additional Python packages not included in the default runtime or from private/curated repositories, with package policy enforcement. | Use when you need to access external package repositories or other network resources (such as internal PyPI servers, Artifactory, or GitHub) that are not available within Snowflake. | Use when you require full customization and control over the container environment, including preinstalled system-level dependencies, custom security tooling, or standardized images across all notebook executions. |
| Ease of Use | Easy. Simply upload .whl or .py files to a Workspace or a Stage. End users need to run !pip install and import commands. | Easy. The Snowflake PyPI repo is available in all accounts by default. Other artifact repositories require admin setup. End users need to run !pip install to install specific packages. | Harder. Requires setup and provisioning by account admin. End users need to run !pip install to install specific packages. | Requires most effort to build and deploy (usually done by the admin / platform team). End users do not need to run any commands as long as the right custom image is selected. Images built on older versions may suffer feature and performance degradation. The initial startup of custom images may be slower. |
From external repositories¶
After configuring External Access Integrations (EAIs) for secure repository access, you can install packages directly from external sources such as PyPI. Users have access to a comprehensive ecosystem of packages beyond the pre-installed runtime, ensuring secure connectivity to external repos.
You can run pip install in a Python cell or in the notebook terminal.
For more information, see Set up external access for Snowflake Notebooks.
From requirements.txt¶
You can specify and install required package versions in a requirements.txt file to ensure a consistent environment setup. Install them
using the following command:
Note
If the package version specified in requirements.txt conflicts with supported versions of the
pre-installed packages, the Python environment may break. Validate compatibility before
installing.
From Workspace files¶
You can download or build .whl or .py files, upload them to your workspace, and install or import them.
-
Wheel files (.whl): Upload the
.whlfile and install it:If the package contains dependencies that are not already installed, upload the complete dependency tree (either directly into Workspaces or to a stage). Alternatively, attach an EAI that allows access to a repository where the package can be downloaded (for example, PyPI).
-
Python files (.py): Modules stored in your workspace can be imported directly for sharing utilities and functions across notebooks. For example:
From a Snowflake stage¶
Stages provide secure and governed package deployment by leveraging existing Snowflake data storage and governance controls for package files. Use the Snowpark session to retrieve package files from a Snowflake stage into the container environment for import and use. For example:
Runtime management¶
Runtime pinning¶
All notebook services are pinned to the Runtime selected at creation unless you explicitly change it by editing the service. For example, a notebook
service created on Runtime 2.0 will not be automatically upgraded when new Runtime versions are released.
Runtime vulnerability scanning¶
Snowflake scans the Runtime images daily for security vulnerabilities. High or critical Common Vulnerabilities and Exposures (CVEs) are addressed by releasing new Runtime versions within 30 days of detection.
Existing notebook services can continue using Runtimes with detected CVEs. However, Runtimes with known CVEs cannot be selected when creating new notebook services.
Custom runtime¶
You can build and register your own custom container images for use with Notebooks and ML Jobs. Custom images let you include specific packages, meet compliance requirements, and ensure reproducibility across environments.
For more information, see Custom runtime images.