2014-11-09 2 views
5

Этот вопрос (How does one overwrite the default compile flags for Cython when building with distutils?) описывает, как устанавливать флаги Cython по умолчанию при использовании distutils.Как установить флаги компилятора Cython при использовании pyximport?

Но как установить флаги компиляции по умолчанию, если я просто использую pyximport?

import pyximport 
pyximport.install() # Pass compile flags here somehow? 

ответ

10

Вы должны использовать .pyxbld файл, смотрите, например this question. Для файла с именем foo.pyx вы должны сделать файл foo.pyxbld. Ниже будет давать дополнительные аргументы оптимизации:

def make_ext(modname, pyxfilename): 
    from distutils.extension import Extension 
    return Extension(name=modname, 
        sources=[pyxfilename], 
        extra_compile_args=['-O3', '-march=native']) 

Я думаю, что можно было бы передать в дополнительных параметрах настройки для pyximport.install если вы прыгаете через достаточно обручи (возни с distribute), чтобы получить setup_args в форме он любит , однако в документации модуля pyximport рекомендуется использовать файл .pyxbld, а в тестовом коде для pyximport только этот метод проверен, поэтому, если есть другой способ, его следует считать неустойчивым/непроверенным, а .pyxbld следует считать надлежащим способом выполнения это.

+0

Является ли файл '.pyxbld' документированным ** в любом месте **? Если да, я не смогу его найти. –

+0

@FakeName документируется в docstring для pyximport.py –

+0

Ok. Документировано ли это где-нибудь, что люди фактически используют на ежедневной основе (читайте: где-то я могу найти с google et al)? –

Смежные вопросы