Cross-project / cross-machine path resolution: sync the code, keep outputs local, zero path edits.
Project description
labpaths
跨项目 / 跨机器的统一路径解析。代码靠同步统一,产出靠不同步的机器配置区分, 两者正交,换机器不用改任何地址参数。
为什么
同一个项目在多台机器(如 Mac 写代码、Windows 跑)之间,绝对路径各不相同。 把地址写死在每个脚本顶部,换机就要改 N 个文件、迟早出错。labpaths 把 “逻辑”和“每台机器/每个项目的具体值”彻底分开:
- 结构路径(原始数据、产出根):从
__file__自动派生,跨机零改动。 - 机器专属值(产出盘、项目外数据):只写在一个不随项目同步的机器配置里。
- 可变构件(多个候选权重/先验):
resolve()让用户灵活自定义,绝对/相对都通。
安装(每台机器一次)
git clone <this-repo> ~/lab-tools/labpaths
pip install -e ~/lab-tools/labpaths
装好后任意项目、任意脚本里 from labpaths import load 直接可用,无需再往
sys.path 塞路径。
两层配置
机器层 ~/labpaths.json(每台机器一份,所有项目共用,不随项目同步):
{
"output_base": "C:/2026H",
"extras": { "spectra_lib": "C:/Users/you/usgs_v7" }
}
首次运行自动生成模板;也可 python -m labpaths --init。
项目层 projectroot.json(放项目根,随项目同步,只含名字、无绝对路径):
{ "name": "myproj", "raw_dir": "60_data", "out": "SHIYAN_DATA" }
脚本里怎么用
from labpaths import load
P = load(__file__)
raw = P.data / "rasters" / "x.tif" # 原始数据(随项目)
out = P.out / "runs" / "expA" # 产出(本地,不同步)
usgs = P.extra("spectra_lib") / "lib" # 项目外数据(机器 extras)
ckpt = P.resolve(user_value, base=P.out) # 灵活权重:绝对原样/相对挂产出根/空->None
P.ensure(out) # 写入前建目录
铁律(配合同步)
同步区里只写“名字”(P.out/P.data/SHIYAN_DATA 这种),真实盘符只写进不同步的
~/labpaths.json。 于是同一份代码在 Mac / Windows 各自解析成各自的绝对路径。
新项目上手
- 项目根跑
python -m labpaths --init-project:生成projectroot.json+AGENTS.md(给其他 agent 的路径说明)。 pip install -e本包(若该机器还没装)。- 脚本里
from labpaths import load; P = load(__file__),路径全走P.*。 - 跑
tests/test_no_abs_paths.py守住“禁绝对路径”。
配套的 setup-paths skill 可把 2~4 步在新项目里自动做掉。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file labpaths-0.4.0.tar.gz.
File metadata
- Download URL: labpaths-0.4.0.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d40f82e4c1c75744a5d7e2799c5387bd2bc5c6e819268d08196b93cd82b049e1
|
|
| MD5 |
6b1e4e47d692fada680f4fe08689d437
|
|
| BLAKE2b-256 |
268658561c87f39d8a0b64f484359cf3784ee7aa5cc5aee879223bcbfee9d98a
|
File details
Details for the file labpaths-0.4.0-py3-none-any.whl.
File metadata
- Download URL: labpaths-0.4.0-py3-none-any.whl
- Upload date:
- Size: 9.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f516947eb41a41462e9c36ffdf9692d9f2082155f921e30063e91032d0521d45
|
|
| MD5 |
25876afb6934d4759aa3afe5d458d9c8
|
|
| BLAKE2b-256 |
59cf6bc08cdbb3a320b51eefa616619c4a7b56872676e2377444c07f2fd4074d
|