Skip to main content
Version: 2.2 (deprecated)

Initial configuration

Creating the initial pants.toml config file.


Pants has a robust options system, allowing you to configure hundreds of options. Every Pants option can be set via a command-line flag, an environment variable, or, most commonly, a config file.

The options system is described in detail here. This page will set up your initial Pants config file.

Creating the config file​

Pants configuration lives in a file called pants.toml in the root of the repo. This file uses the TOML format.

If you haven't yet, create a pants.toml file:

pants.toml
[GLOBAL]
pants_version = "$PANTS_VERSION"

where $PANTS_VERSION is the version of Pants you want to pin your repo to. When you'd like to upgrade Pants, edit pants_version and the ./pants script will self-update on the next run.

Configuring source roots​

Some project layouts use top-level folders for namespace purposes, but have the code live underneath. However, the code's imports will ignore these top-level folders, thanks to mechanisms like the $PYTHONPATH, the JVM classpath, and the $GOROOT. For example, to import the file src/my_project/app.py, many projects use import my_project.app, rather than import src.my_project.app. Source roots are how Pants understands these imports.

By default, Pants recognizes having no source root, or having src, src/python, or src/py as source roots. If your project has a different structure, see Source roots for how to configure them, and for examples of different project structures with Pants.

Enabling Backends​

Most Pants functionality is provided via pluggable backends. You enable a backend by listing it under the backend_packages config key in pants.toml.

For example, to enable Python support:

pants.toml
[GLOBAL]
...
backend_packages = ["pants.backend.python"]