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.1.tar.gz (8.9 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.1-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file labpaths-0.4.1.tar.gz.

File metadata

  • Download URL: labpaths-0.4.1.tar.gz
  • Upload date:
  • Size: 8.9 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.1.tar.gz
Algorithm Hash digest
SHA256 49cc915991775e954a263cef8bfa6e974abd688b85de8615f8d3e2fb8fd2df73
MD5 1503f4b753899cef17793b49291ad110
BLAKE2b-256 9fbd9aae91e17a0097b5e43ae2927ad80d0943b09245708d3cdbd6c07f8890bc

See more details on using hashes here.

File details

Details for the file labpaths-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: labpaths-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 10.4 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7bb4a5f9eb6a29df6b15e2dcb58aa19dd6f90048050594ec4e41a79903d58b47
MD5 c05dff51a8b1f13610fdd45f294b7e9b
BLAKE2b-256 56f3fc223d64becc3fc56770e497930619ea0db52efd62d0da73360eefca6077

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