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.2.tar.gz (9.6 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.2-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: labpaths-0.4.2.tar.gz
  • Upload date:
  • Size: 9.6 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.2.tar.gz
Algorithm Hash digest
SHA256 87b890966f6620075fcfc00c0e918dbb0f56645b256ee79a7111e5b190e1e094
MD5 8ededb01a10af326d802d461ec49544a
BLAKE2b-256 7e2767f256e638d7af7c5a3201ee8e9e339aa1c60e6cdc9374190ecf42b5d1a5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: labpaths-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 10.6 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 aaea441bf0889a5f8cebea654ad306f96aa6b86cd16a471c611957ec9ab0c13d
MD5 e8c73e04bfbaa58832523b70f3e52f4e
BLAKE2b-256 ea07a81be520c4f4e0c1c573fda062875fd2d1a5d409cff7b7a4e70c672e4152

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