如何配置UV Python依赖管理器在本地开发环境中忽略指定依赖以避免被卸载
如何配置UV Python依赖管理器在本地开发环境中忽略指定依赖以避免被卸载
看起来你遇到的是uv sync的「环境一致性」特性导致的问题——uv默认会让虚拟环境严格匹配pyproject.toml里的依赖配置,所以不在配置清单里的已安装包会被自动卸载。针对你本地构建的rusty_crates PyO3绑定包,有两种靠谱的解决方法:
方法一:将本地包加入依赖配置(推荐)
把rusty_crates以本地依赖的形式写入pyproject.toml的依赖列表,这样uv会明确识别它是项目的依赖项,不会再尝试卸载。你只需要根据包的实际位置指定路径即可:
比如,假设你的rusty_crates源码或构建产物(如wheel文件)在项目根目录的./rusty_crates文件夹下,修改dependencies部分:
dependencies = [ # 保留原有的所有依赖... "rusty_crates @ file://./rusty_crates", ]
如果是用maturin构建的PyO3包,直接指向源码目录即可,uv会自动处理安装逻辑;如果有现成的wheel文件,也可以直接指向wheel的路径。
方法二:配置UV保留指定已安装包
如果你只是临时在本地测试,不想把rusty_crates加入正式依赖清单,可以通过uv的配置让它在sync时保留这个已安装包。修改[tool.uv]区块,添加preserve-installed选项:
[tool.uv] preserve-installed = ["rusty_crates"] dev-dependencies = ["ipykernel>=6", "pytest>=8", "ruff>=0", "maturin>=1"]
这个选项的作用是告诉uv:即便这些包不在pyproject.toml的依赖列表里,也不要从虚拟环境中移除它们。
小提示
两种方法里更推荐第一种,因为它能明确记录项目的依赖关系,其他开发者接手项目时也能清晰知道需要这个本地包;第二种更适合临时的本地测试场景。
备注:内容来源于stack exchange,提问作者Kevin Li




