2016-09-09 2 views
3

Я хотел бы проверить системный компилятор C в Python, чтобы я мог добавлять ссылки библиотек, чтобы скомпилировать мой код Cython.Как получить конкретный тип компилятора C из Python distutils?

Я понимаю distutils.ccompiler.get_default_compiler() или что-то вроде compiler.compiler_type вернул бы имя компилятора. Но это слишком грубо, как «unix» и т. Д.

Мне нужна более конкретная информация, такая как «gcc», «icc», «clang» и т. Д., Которые все отображаются как «unix», используя методы выше.

Одним из возможных способов, чтобы получить информацию, чтобы проверить окружение системы переменной CC через os.environ["CC"], но это не гарантирует, что каждая система CC определяется так что это не является универсальным решением.

Итак, что мне делать тогда? Заранее спасибо!

ответ

2

Как правило, вы должны быть в состоянии использовать модуль platform, чтобы получить информацию:

>>> import platform 
>>> platform.python_compiler() 
'GCC 4.8.5 20150623 (Red Hat 4.8.5-4)' 
+0

Спасибо! Но похоже, что это вернет компилятор системы по умолчанию, например. в моей системе - базовую версию GCC, расположенную в '/ usr/bin'. Это компилятор Cython будет использовать, когда 'import pyximport; pyximport.install() '? У пользователя может быть какой-то другой компилятор, который будет использоваться по умолчанию (например, указанный его/ее собственной переменной окружения CC), как я могу это получить? – YDW

+0

Часто вы не получите ничего, кроме «cc», возвращающегося из переменной 'CC' в Python' distutils.sysconfig.get_config_var ('CC') ', если вы не видите ничего, что установлено из команды' disutils' скорее всего, будет установлен компилятор по умолчанию, который выводит из 'os.system ('cc -v')', который по умолчанию должен соответствовать выходу 'platform'. –

+0

Звучит разумно. Поэтому мое окончательное решение является двухступенчатым: сначала проверьте, установлен ли 'CC', если да, прочитайте' os.environ ["CC"] '; если нет, получите информацию от 'distutils.sysconfig.get_config_var ('CC')'. – YDW

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