如何让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.
相关产品推荐
相关产品推荐

