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

如何用pip创建pyproject.toml为特定依赖禁用构建隔离

解决方案:用pip和pyproject.toml实现需求

首先明确:pip install --no-build-isolation确实会完全禁用构建隔离,此时pip不会自动安装setuptools等构建依赖——如果当前环境没有这些工具,构建直接失败。

下面是两种符合你需求的实现方案:

方案1:默认构建隔离+自定义依赖检查(推荐)

默认情况下pip会启用构建隔离,自动在临时环境中安装setuptools(只要在pyproject.toml中声明),同时我们可以添加逻辑检查手动依赖是否存在。

1. 编写pyproject.toml

[build-system]
requires = ["setuptools>=61.0"]  # 指定构建所需的setuptools版本
build-backend = "setuptools.build_meta"

[project]
name = "your-package-name"
version = "0.1.0"
# 不要把需要手动安装的依赖放到dependencies字段,避免pip自动安装

2. 添加依赖检查逻辑

创建setup.py文件,在构建阶段检查手动依赖是否存在:

from setuptools import setup
import importlib

# 替换为你需要手动安装的依赖包名
REQUIRED_MANUAL_DEP = "your-manual-dependency"

try:
    # 尝试导入依赖
    importlib.import_module(REQUIRED_MANUAL_DEP)
except ImportError:
    raise RuntimeError(
        f"错误:依赖 {REQUIRED_MANUAL_DEP} 未安装,请先手动执行 `pip install {REQUIRED_MANUAL_DEP}` 再安装本包。"
    )

# 加载pyproject.toml中的配置
setup()

当用户执行pip install .时:

  • pip自动创建构建隔离环境,安装所需的setuptools(无需用户手动操作)
  • 构建过程触发setup.py中的检查,若缺少手动依赖,直接抛出错误终止安装

方案2:禁用构建隔离但自动确保setuptools存在

如果你必须禁用构建隔离,可以通过组合命令先安装/升级setuptools,再执行安装:

pip install --upgrade setuptools && pip install . --no-build-isolation

同样配合上面的setup.py依赖检查逻辑,就能确保手动依赖已存在。

关键注意事项

  • 绝对不要将手动依赖添加到project.dependencies中,否则pip会自动安装它,违背你的需求
  • 构建隔离是pip的默认安全机制,能避免构建工具与用户环境的版本冲突,优先推荐方案1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 10:08:12