使用uv包管理器时,如何在开发阶段使用本地Python包同时保留pyproject.toml中的Git依赖
使用uv包管理器时,如何在开发阶段使用本地Python包同时保留pyproject.toml中的Git依赖
嘿,这个场景我太熟了——开发依赖自己维护的另一个包时,来回改配置真的超烦!刚好uv有几个完美的解决方案,完全不用动你的pyproject.toml,满足你所有需求:
方案一:本地配置文件覆盖(推荐,适合长期开发)
这是最省心的方式,用一个git忽略的本地配置文件来覆盖依赖源:
- 在你的
yyy项目根目录创建一个.uv.toml文件 - 把这个文件添加到
.gitignore里(这样永远不会被提交到仓库) - 在
.uv.toml里写入以下内容:
[tool.uv.overrides] xxx = { path = "~/xxx", editable = true }
这里的editable = true很重要——开启后你修改本地xxx的代码,yyy里会立即生效,不用重新安装包。
4. 运行uv sync,uv就会自动优先使用你本地的xxx包,完全不会读取pyproject.toml里的Git源。
其他开发者克隆项目后,因为没有.uv.toml,uv会正常使用pyproject.toml里的Git依赖,完全不影响。
方案二:命令行临时覆盖(适合临时测试)
如果你只是偶尔需要切换到本地包,不想创建额外文件,可以直接在uv sync时加参数覆盖:
uv sync --override "xxx @ editable+file:///home/you/xxx"
这个命令会临时让uv使用你指定的本地路径,同样不会修改pyproject.toml。如果不需要实时更新代码,去掉editable+即可。
一些最佳实践分享
- 一定要确保
.uv.toml在.gitignore里,避免不小心提交到仓库影响其他人 - 开发期间尽量用editable模式,节省来回重新安装的时间
- 定期测试“干净环境”:比如临时重命名
.uv.toml,然后运行uv sync,确保项目在使用Git依赖时也能正常工作,避免引入只有本地环境才兼容的代码 - 可以在项目的
README里提一句这个本地覆盖的方法,方便其他需要同时开发xxx和yyy的团队成员参考
备注:内容来源于stack exchange,提问作者Daniel Chin
相关产品推荐
相关产品推荐

