如何在Hatch中配置非硬编码路径的本地项目依赖?
实现Hatch项目B依赖本地项目A的可行方案
方案1:约定固定相对目录结构
如果要求开发者把A和B放在同一父目录下(比如X/A和X/B),可以直接在B的pyproject.toml里使用相对路径的file依赖,Hatch支持这种写法:
[project] dependencies = [ "A @ file://../A" ]
只要保持A和B的相对目录结构不变,不管开发者把父目录X克隆到什么位置,B都能自动识别并依赖本地的A项目,全程无需修改配置文件。
方案2:使用版本控制忽略的辅助配置文件
利用Hatch支持的环境变量扩展,结合被版本控制忽略的辅助文件来动态指定A的路径:
- 在B的
pyproject.toml里预留环境变量占位:
[project] dependencies = [ "A @ file://${PROJECT_A_PATH}" ]
- 创建一个
.env文件(将其加入.gitignore等版本控制忽略列表),让开发者在文件中填写A的绝对路径:
PROJECT_A_PATH=/实际路径/to/project/A
Hatch会自动加载.env文件中的环境变量,这样既不用改动pyproject.toml,也能让开发者灵活设置A的位置。
方案3:初始化脚本提示输入路径
在B项目中添加一个本地初始化脚本(比如setup-local-dev.py,同样加入版本控制忽略列表),脚本运行时提示开发者输入A的路径,自动生成上述.env文件:
import os project_a_path = input("请输入项目A的绝对路径:").strip() with open(".env", "w") as f: f.write(f"PROJECT_A_PATH={project_a_path}\n") print("本地开发配置已生成,可正常安装依赖")
开发者只需运行一次脚本,后续无需修改任何配置文件即可让B依赖本地A。
内容的提问来源于stack exchange,提问作者schuelermine
相关产品推荐
相关产品推荐

