Skip to main content

> find-project-root

Locate project root via custom markers.

About

find-project-root is a lightweight utility that traverses up from a given path until it finds a project marker.

  • Lightweight — < 100 KB
  • Path flexibility — accepts strings, Path objects, or current working dir
  • Customizable markers — provide your own or use defaults
  • Multi-env support — use via API or CLI

Installation

pip install find-project-root

API usage

import find_project_root

# Find from current dir
root = find_project_root()
print(root) # e.g. => /home/user/projects/your-project

Note: Most type checkers will falsely warn find_project_root is not a callable module because they are incapable of analyzing runtime behavior (where the module is replaced w/ a function for cleaner, direct access). You can safely suppress such warnings using # type: ignore.

Available options:

Name Type Description Default Value
path str, Path or None Starting directory to search from. None (current working dir)
max_depth int Max levels to traverse up. 9
markers List[str] or None Custom marker files to look for. project-markers list

Examples:

Start from specific path:

root = find_project_root(path='assets/images')

Limit search depth:

root = find_project_root(max_depth=3)

Use custom markers:

root = find_project_root(markers=['.git', 'pyproject.toml', 'requirements.txt'])

Combine options:

root = find_project_root(path='src', max_depth=5, markers=['manifest.json'])

Command line usage

find-project-root  # or projectroot
# e.g. => 'e:\python\utils\translate-messages'

Command line options:

Option Description
-p, --path Starting dir to search for project root (default: CWD)
-d, --max-depth Max levels to traverse up (default: 9)
-m, --markers Custom marker files to look for (default: project-markers list)
-h, --help Show help screen
-v, --version Show version
--docs Open docs URL

Examples:

Start from specific path:

find-project-root --path="assets/images"

Limit search depth:

find-project-root --max_depth=3

Use custom markers:

find-project-root --markers=.git,pyproject.toml,requirements.txt

Combine options:

find-project-root --path=src --max-depth=5 --markers=.manifest.json

Config file

Run find-project-root --init to create .project-root.config.json5 in your project root to set default options.

Example defaults:

{
  "path": "",     // starting dir to search for project root (default: CWD)
  "max_depth": 9, // max levels to traverse up
  "markers": ""   // custom marker files to look for
}

Note: CLI arguments always override config file.


MIT License

Copyright © 2026 Adam Lui


Related

🏷️ project-markers - Common project root markers.
📊 get-min-py - Get the minimum Python version required for a PyPI package.

More Python utilities / Discuss / Report bug / Report vulnerability / Back to top ↑

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

find_project_root-2.2.0.tar.gz (19.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

find_project_root-2.2.0-py3-none-any.whl (21.4 kB view details)

Uploaded Python 3

File details

Details for the file find_project_root-2.2.0.tar.gz.

File metadata

  • Download URL: find_project_root-2.2.0.tar.gz
  • Upload date:
  • Size: 19.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for find_project_root-2.2.0.tar.gz
Algorithm Hash digest
SHA256 a32cc43794cc3e2c26a021a44a598aef88ddc78b7527881c6dddd078e6bc9b09
MD5 77d8f46a7890c9088618a8edc1a59fb6
BLAKE2b-256 3e6739e917239ea556758e24085ce6dfbc8812e82a2879a93dc036e737017e19

See more details on using hashes here.

Provenance

The following attestation bundles were made for find_project_root-2.2.0.tar.gz:

Publisher: publish-to-pypi-on-new-tag.yml on adamlui/python-utils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file find_project_root-2.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for find_project_root-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ef1371593b6ad762d7c0bc550e22834919978f0d6e4ea706864a2305817e5c4
MD5 b7c0188382bd701b376f50a17a9142f7
BLAKE2b-256 fd4071727fa0e39612c255d32411ada0c025c1a48eee72c27288dbf3ce227f3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for find_project_root-2.2.0-py3-none-any.whl:

Publisher: publish-to-pypi-on-new-tag.yml on adamlui/python-utils

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2.2.0 This release

2 files

2.1.2

2 files

2.1.1

2 files

2.1.0

2 files

2.0.0

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page