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

如何让setup.py调用C++编译器而非C编译器?(适配Python3.6/RHEL7)

解决RHEL7 Python3.6 distutils不调用g++的问题

这里有几个比env CC=/path/to/g++更便捷的方案:

  • 在setup.py中直接指定编译器
    不用每次在命令行设置环境变量,直接在setup脚本开头配置CC环境变量,让distutils自动调用g++:

    import os
    # 若g++已在系统PATH中,可直接写'g++',否则填完整路径
    os.environ['CC'] = '/path/to/g++'
    
    from distutils.core import setup, Extension
    
    ext_module = Extension(
        "your_module_name",
        sources=["your_source.cpp"],
        language="c++"
    )
    
    setup(
        name="your_module_name",
        ext_modules=[ext_module]
    )
    
  • 使用distutils配置文件全局/项目级生效
    在用户主目录创建.pydistutils.cfg文件,添加以下内容,让所有扩展构建默认使用g++:

    [build_ext]
    compiler=g++
    

    如果只想针对当前项目生效,把该文件放在项目根目录即可。

  • 替换为setuptools(推荐,若环境允许)
    Python3.6自带的distutils对C++的支持存在缺陷,setuptools对此做了优化。先确保环境安装了setuptools(可通过pip install setuptools安装),然后修改setup.py使用setuptools的Extension:

    from setuptools import setup, Extension
    
    ext_module = Extension(
        "your_module_name",
        sources=["your_source.cpp"],
        language="c++"
    )
    
    setup(
        name="your_module_name",
        ext_modules=[ext_module]
    )
    

    setuptools会自动识别language='c++'配置,调用对应的C++编译器。

内容的提问来源于stack exchange,提问作者Mikhail T.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:42:06