是否有一个用于 uv 的命令,仅导出/提取从
pyproject.toml
文件中声明为开发依赖项的依赖项,例如将测试依赖项传递给 tox?
uv add Django
uv add pytest --dev
结果如下
pyproject.toml
:
[project]
dependencies = [
"django>=4.2.15",
]
[tool.uv]
dev-dependencies = [
"pytest>=8.3.2",
]
如何生成一个仅包含开发依赖项的文件,基本上是一个
requirements-dev.txt
?
uv pip compile pyproject.toml
不包括开发部门,仅包括主要部门。我没有看到一个论点让它包含它:
Resolved 4 packages in 83ms
# This file was autogenerated by uv via the following command:
# uv pip compile pyproject.toml
asgiref==3.8.1
# via django
django==4.2.15
# via hatch-demo (pyproject.toml)
sqlparse==0.5.1
# via django
typing-extensions==4.12.2
# via asgiref
作为比较,诗歌有
poetry export --only dev -o requirements-dev.txt
,它会生成这样的东西:
iniconfig==2.0.0 ; python_version >= "3.12" and python_version < "4.0"
packaging==24.1 ; python_version >= "3.12" and python_version < "4.0"
pluggy==1.5.0 ; python_version >= "3.12" and python_version < "4.0"
pytest==8.3.2 ; python_version >= "3.12" and python_version < "4.0"
将 uv 更新到版本 0.4.11 或更高版本(
uv self update
),并使用以下命令:
uv export --only-dev --no-hashes | awk '{print $1}' FS=' ;' > requirements-dev.txt
uv
工具不提供直接命令来仅将开发依赖项导出到requirements-dev.txt
文件中,类似于Poetry的做法。但是,您可以从 pyproject.toml
文件中手动过滤开发依赖项并创建 requirements-dev.txt
文件来实现此目的。要手动执行此操作,您需要执行以下操作:
pyproject.toml
文件并找到 [tool.uv.dev-dependencies]
部分。requirements-dev.txt
的新文件。幸运的是,您可以使用以下脚本自动执行此过程:
import toml
# Load the pyproject.toml file
with open('pyproject.toml', 'r') as file:
pyproject = toml.load(file)
# Extract the dev dependencies
dev_dependencies = pyproject.get('tool', {}).get('uv', {}).get('dev-dependencies', [])
# Write to requirements-dev.txt
with open('requirements-dev.txt', 'w') as file:
for dep in dev_dependencies:
file.write(dep + '\n')
此脚本将读取
pyproject.toml
,提取开发依赖项并将其写入您的 requirements-dev.txt
文件中。
看来uv现在已经引入了该功能(在这里运行
0.4.18
):
Options:
[...]
--only-dev Omit non-development dependencies