Использование 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) в плагине Python для collectd упоминает Python 3:

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

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

1 ответ

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

Посмотрите здесь:

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

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

Другие вопросы по тегам