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

如何通过pip安装软件包时跳过C扩展编译?含可选扩展禁用方法

嘿,这俩问题我之前折腾包的时候也碰到过,刚好有现成的解决办法,给你拆解清楚:

1. 安装软件包时跳过所有C扩展构建

如果想让pip装包时完全不碰C扩展的编译,有几个实用的路子:

  • 首选方法:给setup.py传递全局选项。很多遵循规范的包都支持--no-extensions这个开关,直接这么装就行:
    pip install [你的包名] --global-option="--no-extensions"
    
  • 环境变量大法:有些包会监听通用的环境变量,比如DISABLE_C_EXTENSIONS,装之前先导出这个变量,脚本会自动跳过扩展编译:
    export DISABLE_C_EXTENSIONS=true
    pip install [你的包名]
    
  • 兜底方案:如果碰到不支持上面选项的倔脾气包,可以临时把编译器设成无效命令,迫使构建脚本回退到纯Python版本(会有警告,但能用):
    CC=false pip install [你的包名]
    
2. 针对特定包禁用可选C扩展(以markupsafe和subprocess32为例)

这类带可选扩展的包,一般都有自己专属的控制开关,比全局设置精准多了:

禁用markupsafe的_speedups扩展

markupsafe官方专门做了环境变量开关,装之前设置好就行,我平时都是这么干的:

MARKUPSAFE_NO_EXTENSIONS=true pip install markupsafe

也可以通过pip的安装选项传递参数,效果一样:

pip install markupsafe --install-option="--without-speedups"

禁用subprocess32的_posixsubprocess32扩展

subprocess32的逻辑类似,它会监听SUBPROCESS32_NO_EXTENSIONS这个环境变量,执行命令如下:

SUBPROCESS32_NO_EXTENSIONS=true pip install subprocess32

要是你想强制源码安装并跳过扩展,也可以这么写(不过上面的环境变量方法更简洁):

pip install subprocess32 --no-binary :all: --install-option="--without-extensions"

内容的提问来源于stack exchange,提问作者Łukasz Rogalski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:53:28