如何使用uv安装Python项目的所有开发依赖?
解决uv安装全量依赖(含开发依赖)的问题
一、先搞懂uv sync和uv pip sync的区别
uv pip sync:完全贴合pip的工作流,只同步requirements.txt这类锁文件里的依赖,不会读取pyproject.toml中的开发依赖配置。uv sync:uv原生的同步命令,直接读取pyproject.toml的主依赖和开发依赖,还会自动以可编辑模式安装你的本地项目包,但对项目目录结构有要求,这也是你报错的原因。
二、安装所有依赖的两种方案
方案1:用uv pip直接安装(无需调整目录结构)
如果不想折腾项目结构,激活虚拟环境后,直接执行以下命令安装主依赖+开发依赖:
# 激活虚拟环境(Linux/macOS) source .venv/bin/activate # Windows系统用:.venv\Scripts\activate # 安装主依赖和开发依赖 uv pip install -e .[dev]
注意:要让.[dev]生效,需要先在pyproject.toml中把开发依赖移到PEP标准的optional-dependencies字段下(和tool.uv.dev-dependencies可以共存):
[project] name = "my-project" dependencies = [ "django", ] # 添加这部分 optional-dependencies = { dev = [ "factory-boy", ] } [tool.uv] dev-dependencies = [ "factory-boy", ] [tool.uv.pip] python-version = "3.10"
方案2:修复目录结构后用uv sync(更符合uv原生工作流)
你遇到的报错是因为uv在根目录发现了多个顶级Python包目录(conf、hines等),它默认认为根目录应该只有一个项目包。解决方法二选一:
方法A:调整项目目录结构
把所有Python代码放到一个和项目同名的子目录下,根目录只放配置文件和非代码目录:
my-project/ ├── my-project/ # 项目主包目录 │ ├── __init__.py │ ├── conf/ │ ├── hines/ │ └── ... ├── docker/ # 非代码目录保留在根目录 ├── assets/ ├── node_modules/ ├── pyproject.toml └── .venv/
方法B:在pyproject.toml中明确指定项目包
如果不想移动目录,直接在project字段里声明你的所有Python包:
[project] name = "my-project" dependencies = [ "django", ] # 添加这行,列出所有顶级Python包 packages = [{"include" = "conf"}, {"include" = "hines"}] [tool.uv] dev-dependencies = [ "factory-boy", ] [tool.uv.pip] python-version = "3.10"
修复后,执行以下命令安装所有依赖(包括开发依赖):
uv sync --dev
内容的提问来源于stack exchange,提问作者Phil Gyford
相关产品推荐
相关产品推荐

