syspath-hack
syspath-hack provides small helpers for keeping sys.path predictable in
scripts, notebooks, and tests. It resolves entries before adding them, avoids
duplicates, and can locate your project root with a marker file such as
pyproject.toml.
Installation
Install from PyPI with your preferred tool:
pip install syspath-hackuv add syspath-hack
Quick start
Add the project root to sys.path so local imports work during ad-hoc scripts
or notebooks:
from syspath_hack import add_project_root
add_project_root() # finds the nearest pyproject.toml above the cwd
Prefer prepend_project_root() when you need imports to prioritise the working
tree over installed copies of the package.
Both project-root helpers accept extra_paths for common subdirectories. For
example, to prioritise the project and its src tree:
from syspath_hack import prepend_project_root
prepend_project_root(extra_paths=["src"])
Working in a GitHub Action? Use append_action_root() or
prepend_action_root() to locate action.yml and automatically include
scripts and src when they exist.
Working with temporary paths
When you need to add a directory only briefly, use temp_syspath to mutate
sys.path inside a context manager and restore it afterwards:
from syspath_hack import SysPathMode, temp_syspath
with temp_syspath(["plugins"], mode=SysPathMode.PREPEND):
import plugin_loader # noqa: F401
For module-local imports, ensure_module_dir(__file__) adds the current file's
directory to sys.path in one call, replacing the boilerplate
Path(__file__).resolve().parent pattern.
Custom project markers
You can search for a different marker file and handle failures explicitly:
from syspath_hack import ProjectRootNotFoundError, find_project_root
try:
repo_root = find_project_root("poetry.lock")
except ProjectRootNotFoundError as err:
raise SystemExit(f"Could not locate the repository: {err}") from err
else:
print(repo_root)
Metadata
Release files for syspath-hack 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| syspath_hack-0.4.0.tar.gz | 9.1 kB | Without provenance | Details for syspath_hack-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| syspath_hack-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for syspath_hack-0.4.0-py3-none-any.whl |
Total release size: 15.6 kB
Release files / syspath_hack-0.4.0.tar.gz
| Download URL | syspath_hack-0.4.0.tar.gz |
|---|---|
| Size | 9.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5e8897d6da1896b00c0018072c03b32242e655602fc574d0161c82ec01f7a9c4
|
|
BLAKE2b-256 checksum How to use checksums |
7dfbfd0a709b2c467103903a2588495710746cc3438896ca24ccec540265de47
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.11
|
Release files / syspath_hack-0.4.0-py3-none-any.whl
| Download URL | syspath_hack-0.4.0-py3-none-any.whl |
|---|---|
| Size | 6.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bc1d56da9f456a7d75f5c1469188ebeafe878e66e16fd3a4d6f981e432ec42fd
|
|
BLAKE2b-256 checksum How to use checksums |
455edb0d806e32005b4d32541ab35a957a30f06943c6d10c583c0355c44a0a43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.11
|
Security for syspath-hack 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.