Назад | Перейти на главную страницу

Использование collectd с Python 3

Я хотел бы использовать интерпретатор Python 3 в collectd, но нет (задокументированной) опции для установки пути или версии интерпретатора, и по умолчанию используется интерпретатор Python 2, который также установлен в моей системе (по адресу /usr/bin/python2.7).

Мой интерпретатор Python 3 находится по адресу /usr/bin/python3 и /usr/bin/python имеет символическую ссылку на него; запуск "env python" и "python" дает мне интерпретатор Python 3.

В документация (неясно и выглядит незаконченным IMO) в плагине collectd Python упоминается Python 3:

Имя кодировки - кодировка по умолчанию для объектов Unicode, передаваемых в collectd. Если вы опустите эту опцию, по умолчанию будет использоваться ascii на Python 2 и utf-8 на Python 3. Это жестко запрограммировано в Python и будет игнорировать все остальное, включая вашу локаль.

Но это не говорит о том, как на самом деле использовать Python 3 с ним, и Google, похоже, тоже не знает.

Возможно, вам придется перекомпилировать collectd.

Взгляните сюда:

https://github.com/collectd/collectd/blob/master/src/pyconfig.c

Из того, что я вижу (поправьте меня, если я ошибаюсь). В #include <Python.h> и #include "cpython.h" статически построить версию на Python. Таким образом, любая версия Python, которая в настоящее время находится в вашем LD Path, будет использоваться для сборки модуля, и эта версия будет использоваться для выполнения плагина.