| # Getting started | |
| This doc is a simplified guide to help get started started quickly. It provides | |
| a simplified introduction to having a working Python program for both bzlmod | |
| and the older way of using `WORKSPACE`. | |
| It assumes you have a `requirements.txt` file with your PyPI dependencies. | |
| For more details information about configuring `rules_python`, see: | |
| * [Configuring the runtime](toolchains) | |
| * [Configuring third party dependencies (pip/pypi)](pypi-dependencies) | |
| * [API docs](api/index) | |
| ## Using bzlmod | |
| The first step to using rules_python with bzlmod is to add the dependency to | |
| your MODULE.bazel file: | |
| ```starlark | |
| # Update the version "0.0.0" to the release found here: | |
| # https://github.com/bazelbuild/rules_python/releases. | |
| bazel_dep(name = "rules_python", version = "0.0.0") | |
| pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") | |
| pip.parse( | |
| hub_name = "my_deps", | |
| python_version = "3.11", | |
| requirements_lock = "//:requirements.txt", | |
| ) | |
| use_repo(pip, "my_deps") | |
| ``` | |
| ## Using a WORKSPACE file | |
| Using WORKSPACE is deprecated, but still supported, and a bit more involved than | |
| using Bzlmod. Here is a simplified setup to download the prebuilt runtimes. | |
| ```starlark | |
| load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") | |
| # Update the SHA and VERSION to the lastest version available here: | |
| # https://github.com/bazelbuild/rules_python/releases. | |
| SHA="84aec9e21cc56fbc7f1335035a71c850d1b9b5cc6ff497306f84cced9a769841" | |
| VERSION="0.23.1" | |
| http_archive( | |
| name = "rules_python", | |
| sha256 = SHA, | |
| strip_prefix = "rules_python-{}".format(VERSION), | |
| url = "https://github.com/bazelbuild/rules_python/releases/download/{}/rules_python-{}.tar.gz".format(VERSION,VERSION), | |
| ) | |
| load("@rules_python//python:repositories.bzl", "py_repositories") | |
| py_repositories() | |
| load("@rules_python//python:repositories.bzl", "python_register_toolchains") | |
| python_register_toolchains( | |
| name = "python_3_11", | |
| # Available versions are listed in @rules_python//python:versions.bzl. | |
| # We recommend using the same version your team is already standardized on. | |
| python_version = "3.11", | |
| ) | |
| load("@python_3_11//:defs.bzl", "interpreter") | |
| load("@rules_python//python:pip.bzl", "pip_parse") | |
| pip_parse( | |
| ... | |
| python_interpreter_target = interpreter, | |
| ... | |
| ) | |
| ``` | |
| ## "Hello World" | |
| Once you've imported the rule set using either Bzlmod or WORKSPACE, you can then | |
| load the core rules in your `BUILD` files with the following: | |
| ```starlark | |
| load("@rules_python//python:defs.bzl", "py_binary") | |
| py_binary( | |
| name = "main", | |
| srcs = ["main.py"], | |
| deps = [ | |
| "@my_deps//foo", | |
| "@my_deps//bar", | |
| ] | |
| ) | |
| ``` |