Python 2.7 如何为codepy.toolchain设置编译器?

Python 2.7 如何为codepy.toolchain设置编译器?,python-2.7,python-3.4,toolchain,Python 2.7,Python 3.4,Toolchain,这两行代码取自 我理解,这应该返回一个C++编译器的工具链实例,该代码在$HOME/.AkStutsDebug .Py < /C> > 中找到。 BOOST_COMPILER = 'gcc' BOOST_INC_DIR = ['/usr/local/Cellar/boost/1.57.0/include/'] BOOST_LIB_DIR = ['/usr/local/Cellar/boost/1.57.0/lib/'] BOOST_PYTHON_LIBNAME = ['boost_python

这两行代码取自

我理解,这应该返回一个C++编译器的工具链实例,该代码在$HOME/.AkStutsDebug .Py < /C> >

中找到。
BOOST_COMPILER = 'gcc'
BOOST_INC_DIR = ['/usr/local/Cellar/boost/1.57.0/include/']
BOOST_LIB_DIR = ['/usr/local/Cellar/boost/1.57.0/lib/']

BOOST_PYTHON_LIBNAME = ['boost_python']
BOOST_THREAD_LIBNAME = ['boost_thread']
CUDADRV_LIBNAME = ['cuda']
CUDADRV_LIB_DIR = ['${CUDA_ROOT}/lib']
CUDART_LIBNAME = ['cudart']
CUDART_LIB_DIR = ['${CUDA_ROOT}/lib']
CUDA_ENABLE_CURAND = True
CUDA_ENABLE_GL = True
CUDA_INC_DIR = ['${CUDA_ROOT}/include']
CUDA_TRACE = False
CURAND_LIBNAME = ['curand']
CURAND_LIB_DIR = ['${CUDA_ROOT}/lib']
USE_SHIPPED_BOOST = False
在Python2.7.6下,我得到以下异常

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/codepy/toolchain.py", line 433, in guess_toolchain
    raise ToolchainGuessError("unknown compiler")
codepy.toolchain.ToolchainGuessError: unknown compiler

我怎样才能告诉
codepy.toolchain
使用哪个编译器?

CC
环境变量设置为适当的值可能会有所帮助。还要检查Python
Makefile
,该文件存储在Python
lib
目录的
config
下。配置信息首先来自于此。

我将文件
~/.aksetup defaults.py
修改为:

#For CUDA
CUDA_ROOT=['/Developer/NVIDIA/CUDA-5.0/']
CUDADRV_LIB_DIR=['/Developer/NVIDIA/CUDA-5.0/lib']
CUDA_INC_DIR=['/Developer/NVIDIA/CUDA-5.0/include']

#For Boost
BOOST_INC_DIR=['${HOME}/pool/include/']
BOOST_LIB_DIR=['${HOME}/pool/lib']
USE_SHIPPED_BOOST=False

这解决了
工具链
的问题,但我仍在尝试如何编译。

即使我设置了
CC=gcc-4.9
工具链仍然使用
clang
作为默认编译器。有什么方法可以推翻这一点吗?
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/cluster/home03/math/echeverl/local2/lib/python3.4/site-packages/codepy/toolchain.py", line 439, in guess_nvcc_toolchain
    gcc_kwargs = _guess_toolchain_kwargs_from_python_config()
  File "/cluster/home03/math/echeverl/local2/lib/python3.4/site-packages/codepy/toolchain.py", line 398, in _guess_toolchain_kwargs_from_python_config
    so_ext=make_vars["SO"],
KeyError: 'SO'
def guess_toolchain():
    """Guess and return a :class:`Toolchain` instance.

    Raise :exc:`ToolchainGuessError` if no toolchain could be found.
    """
    kwargs = _guess_toolchain_kwargs_from_python_config()

    from pytools.prefork import call_capture_output
    result, version, stderr = call_capture_output([kwargs["cc"], "--version"])
    if result != 0:
        raise ToolchainGuessError("compiler version query failed: "+stderr)
    #Original Code
    # if "Free Sofware Foundation" in version:
    #Modified line to recognize clang 
    if ("Free Software Foundation" in version) or ("clang" in version):
        if "-Wstrict-prototypes" in kwargs["cflags"]:
            kwargs["cflags"].remove("-Wstrict-prototypes")
        if "darwin" in version:
            # Are we running in 32-bit mode?
            # The python interpreter may have been compiled as a Fat binary
            # So we need to check explicitly how we're running
            # And update the cflags accordingly
            import sys
            if sys.maxint == 0x7fffffff:
                kwargs["cflags"].extend(['-arch', 'i386'])

        return GCCToolchain(**kwargs)
    else:
        raise ToolchainGuessError("unknown compiler")
#For CUDA
CUDA_ROOT=['/Developer/NVIDIA/CUDA-5.0/']
CUDADRV_LIB_DIR=['/Developer/NVIDIA/CUDA-5.0/lib']
CUDA_INC_DIR=['/Developer/NVIDIA/CUDA-5.0/include']

#For Boost
BOOST_INC_DIR=['${HOME}/pool/include/']
BOOST_LIB_DIR=['${HOME}/pool/lib']
USE_SHIPPED_BOOST=False