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

使用scikit-build-core+pyproject.toml在pip install时自动测试Python包

自动测试scikit-build-core构建Python包的安装有效性

针对你的需求,这里提供几种可行的方案,完全满足验证安装后Python绑定可用性的需求,且无需依赖scikit-build-core触发测试:

方案1:自定义pip安装后触发测试

通过setuptools自定义安装命令,在pip install完成后自动运行测试用例。

  1. 在项目根目录创建setup.py(配合pyproject.toml使用setuptools),添加自定义安装逻辑:
from setuptools import setup
from setuptools.command.install import install
import subprocess

class PostInstallTest(install):
    def run(self):
        install.run(self)
        # 调用pytest测试已安装的包
        subprocess.run(["pytest", "--pyargs", "your_package_name"], check=True)

setup(
    name="your_package_name",
    # 其他必要配置(版本、作者等)
    cmdclass={"install": PostInstallTest},
    extras_require={"test": ["pytest"]}
)
  1. 在pyproject.toml中声明测试依赖,确保安装时能获取到pytest:
[project.optional-dependencies]
test = ["pytest>=7.0"]
  1. 若需触发测试,执行pip install your_package_name[test],安装完成后会自动运行测试。

方案2:用tox自动化多环境安装测试

tox可以创建独立虚拟环境,完整模拟用户安装流程并执行测试,适合跨版本验证:

  1. 安装tox:pip install tox
  2. 在项目根目录创建tox.ini:
[tox]
envlist = py38, py39, py310, py311
skipsdist = true  # 依赖scikit-build-core的构建流程,tox直接调用pip安装

[testenv]
commands =
    pip install .  # 模拟用户安装
    pytest tests/  # 运行测试用例
deps =
    pytest>=7.0
  1. 执行tox,工具会自动在每个Python版本的干净环境中安装包并运行测试。

方案3:CI/CD流水线中模拟真实安装

在GitHub Actions、GitLab CI等流水线中创建干净环境,完全复刻用户安装场景:
以GitHub Actions为例,创建.github/workflows/test-install.yml:

name: 验证安装有效性
on: [push, pull_request]

jobs:
  test-install:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: ["3.8", "3.9", "3.10", "3.11"]
    steps:
      - uses: actions/checkout@v4
      - name: 设置Python ${{ matrix.python-version }}
        uses: actions/setup-python@v5
        with:
          python-version: ${{ matrix.python-version }}
      - name: 构建包
        run: pip install build && python -m build
      - name: 从wheel安装包
        run: pip install dist/*.whl
      - name: 运行测试
        run: python -m pytest tests/

执行流水线时,会在每个Python版本的干净环境中安装包,测试安装后的功能是否正常。

方案4:改进CMake测试,模拟安装路径

如果偏好通过CMake处理,可模拟site-packages目录,让测试更接近真实安装环境:
在CMakeLists.txt中添加自定义命令:

# 假设你的Python绑定目标为your_python_lib
add_custom_command(
  TARGET your_python_lib POST_BUILD
  COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/test_env/site-packages"
  COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:your_python_lib>" "${CMAKE_BINARY_DIR}/test_env/site-packages/"
  COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH="${CMAKE_BINARY_DIR}/test_env/site-packages"
          ${PYTHON_EXECUTABLE} -m pytest "${CMAKE_SOURCE_DIR}/tests/"
  COMMENT "运行安装模拟测试"
)

该方法将构建后的库复制到模拟的site-packages目录,设置PYTHONPATH后运行测试,能验证导入、资源加载等安装后才会出现的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 19:51:20