# Welcome to Nox

`nox` is a command-line tool that automates testing in multiple Python environments, similar to tox. Unlike tox, Nox uses a standard Python file for configuration.

To install Nox with pipx:

    pipx install nox

You can also use pip in your global python:

    python3 -m pip install nox

Nox is configured via a `noxfile.py` file in your project’s directory. Here’s a simple noxfile that runs lint and some tests:

    import nox

    @nox.session
    def tests(session):
        session.install('pytest')
        session.run('pytest')

    @nox.session
    def lint(session):
        session.install('flake8')
        session.run('flake8', '--import-order-style', 'google')

To run both of these sessions, just run:

    nox

For each session, Nox will automatically create a virtualenv with the appropriate interpreter, install the specified dependencies, and run the commands in order.

To learn how to install and use Nox, see the Tutorial. For documentation on configuring sessions, see Configuration & API. For documentation on running `nox`, see Command-line usage.

## Projects that use Nox

Nox is lucky to have over 3,000 wonderful projects that use it and provide feedback and contributions. A few of them are:

- Bézier

- cibuildwheel

- gapic-generator-python

- gdbgui

- Google Assistant SDK

- google-cloud-python

- google-resumable-media-python

- Hydra

- Jupyter

- manylinux

- OmegaConf

- OpenCensus Python

- packaging

- packaging.python.org

- pip

- pipx

- pybind11

- Salt

- Scikit-build

- Scikit-HEP

- Scientific Python

- Subpar

- Urllib3

- Zazo

## Other useful projects

Nox is not the only tool of its kind. If Nox doesn’t quite fit your needs or you want to do more research, we recommend looking at these tools:

- tox is the de-facto standard for managing multiple Python test environments, and is the direct spiritual ancestor to Nox.

- Invoke is a general-purpose task execution library, similar to Make. Nox can be thought of as if Invoke were tailored specifically to Python testing, so Invoke is a great choice for scripts that need to encompass far more than Nox’s specialization.

- Hatch A modern, extensible Python project manager using `pyproject.toml` configuration and a scripts + environments approach.

## Maintainers & contributors

Nox is free & open-source software and is made possible by community maintainers and contributors.

Our maintainers are (in alphabetical order):

- Chris Wilcox

- Claudio Jolowicz

- Danny Hermes

- Diego Ramirez

- Henry Schreiner

- Luke Sneeringer

- Santos Gallegos

- Thea Flowers

- Tom Fleet

Nox also exists due to the various patches and work contributed by the community. If you’d like to get involved, see Contributing. We pay our contributors using Open Collective.