仅导出开发依赖项

问题描述 投票:0回答:3

是否有一个用于 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"
python uv
3个回答
1
投票

将 uv 更新到版本 0.4.11 或更高版本(

uv self update
),并使用以下命令:

uv export --only-dev --no-hashes | awk '{print $1}' FS=' ;' > requirements-dev.txt


0
投票

uv
工具不提供直接命令来仅将开发依赖项导出到
requirements-dev.txt
文件中,类似于Poetry的做法。但是,您可以从
pyproject.toml
文件中手动过滤开发依赖项并创建
requirements-dev.txt
文件来实现此目的。要手动执行此操作,您需要执行以下操作:

  1. 打开您的
    pyproject.toml
    文件并找到
    [tool.uv.dev-dependencies]
    部分。
  2. 复制开发依赖项列表
  3. 创建一个名为
    requirements-dev.txt
    的新文件。
  4. 将开发依赖项粘贴到此文件中,确保每个依赖项都位于新行中。

幸运的是,您可以使用以下脚本自动执行此过程:

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
文件中。


0
投票

看来uv现在已经引入了该功能(在这里运行

0.4.18
):

Options:
[...]
      --only-dev                           Omit non-development dependencies
© www.soinside.com 2019 - 2024. All rights reserved.