You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Hatch test安装whl而非直接用项目目录?及工具选型疑问

问题

我按照建议配置了Hatch的测试环境:

[tool.hatch.envs.hatch-test]
dev-mode = false # 该配置意在安装whl而非使用可编辑/本地模式
dependencies = [
    "pytest"
]

但执行hatch test时测试失败,报错显示仍在使用本地文件:

=========================================== FAILURES ===========================================
_________________________________________ test_binary __________________________________________

    def test_binary() -> str | None:
        if True:
            root = files('del3')
            children = [f for f in get_files_recursively(root)]
>           raise AssertionError(f"{children}")
E           AssertionError: [WindowsPath('E:/SourceCode/AndroidStudioProjects/Base/del3/src/del3/__about__.py'), WindowsPath('E:/SourceCode/AndroidStudioProjects/Base/del3/src/del3/__init__.py'), WindowsPath('E:/SourceCode/AndroidStudioProjects/Base/del3/src/del3/__pycache__/__init__.cpython-312.pyc')]  

我的目标是打包二进制文件,通过安装whl包进行测试以验证功能正常,认可Hatch的构建钩子,但当前测试不符合预期,现提出两个问题:

  1. 如何正确让Hatch安装whl包而非直接使用本地文件?
  2. Hatch是否为最优工具?是否有更易用的构建系统?

解答

1. 让Hatch安装whl包而非本地文件的正确配置

  • 仅设置dev-mode = false无法实现目标,需要明确让测试环境依赖构建好的whl包,而非本地源码,步骤如下:
    1. 先构建whl包:执行hatch build命令,生成的包会输出到dist/目录。
    2. 修改测试环境配置,将生成的whl作为依赖添加:
      [tool.hatch.envs.hatch-test]
      dev-mode = false
      dependencies = [
          "pytest",
          # 替换为实际生成的whl文件名,使用项目根目录下的相对路径
          "./dist/del3-<你的版本号>-py3-none-any.whl"
      ]
      
    3. 重建测试环境:执行hatch env prune hatch-test删除原有环境,再用hatch env create hatch-test重新创建并同步依赖,之后执行hatch test即可。
  • 额外注意:测试代码中不要直接读取本地文件系统路径(比如files('del3')这类操作),如果是验证安装后的包功能,应该通过Python包导入的方式访问资源,而非本地路径。

2. Hatch是否为最优工具?替代构建系统推荐

Hatch功能全面,尤其是构建钩子、多环境管理的特性很实用,但如果追求更轻量化或直观的操作,可考虑以下替代工具:

  • Poetry:以依赖管理和打包为核心,操作逻辑直观,打包whl流程简单,生态成熟,适合需要快速上手的项目。
  • Flit:专注纯Python包打包,配置极简,无需复杂的toml配置项,打包速度快,适合轻量项目。
  • Setuptools:Python官方构建工具,兼容性最强,支持高度定制,适合复杂项目,但配置相对繁琐。

如果认可Hatch的构建钩子,建议优先解决当前环境配置问题,Hatch完全能满足二进制打包+测试的需求;若追求更简洁的操作,Poetry或Flit是不错的替代选项。

内容的提问来源于stack exchange,提问作者Cyber Avater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 22:45:59