Skip to main content

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 各自解析成各自的绝对路径。

新项目上手

  1. 项目根跑 python -m labpaths --init-project:生成 projectroot.json + AGENTS.md(给其他 agent 的路径说明)。
  2. pip install -e 本包(若该机器还没装)。
  3. 脚本里 from labpaths import load; P = load(__file__),路径全走 P.*
  4. tests/test_no_abs_paths.py 守住“禁绝对路径”。

配套的 setup-paths skill 可把 2~4 步在新项目里自动做掉。

Project details


Download files

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

Source Distribution

labpaths-0.4.0.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

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

labpaths-0.4.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

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

Hashes for labpaths-0.4.0.tar.gz
Algorithm Hash digest
SHA256 d40f82e4c1c75744a5d7e2799c5387bd2bc5c6e819268d08196b93cd82b049e1
MD5 6b1e4e47d692fada680f4fe08689d437
BLAKE2b-256 268658561c87f39d8a0b64f484359cf3784ee7aa5cc5aee879223bcbfee9d98a

See more details on using hashes here.

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

Hashes for labpaths-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f516947eb41a41462e9c36ffdf9692d9f2082155f921e30063e91032d0521d45
MD5 25876afb6934d4759aa3afe5d458d9c8
BLAKE2b-256 59cf6bc08cdbb3a320b51eefa616619c4a7b56872676e2377444c07f2fd4074d

See more details on using hashes here.

Supported by

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