| # 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", |
| ] |
| ) |
| ``` |