Вы не упоминаете операционную систему, например, Milliways. Я предполагаю, что вы имеете в виду Raspbian или какой-то другой GNU / Linux. Windows IoT будет отдельной.
Все библиотеки Python являются обертками для библиотек C, что не является чем-то необычным. Создание библиотек с нуля во что-то, отличное от C было бы. Есть три:
Они существовали как минимум несколько лет и активно поддерживаются (например, последняя версия libbcm2835 была 3-4 месяца назад).
Тем не менее, вам не нужна библиотека в зависимости от того, что вы хотите сделать. Как уже упоминалось, в дополнение к интерфейсу sysfs для базовых вещей существуют переносимые пользовательские интерфейсы уровня C для I2C и SPI, которые используют драйверы ядра. Это просто оставляет ШИМ - для доступа и использования аппаратных каналов вам нужно использовать одну из этих трех библиотек. Или, как упоминает Джоан в комментарии к этому другому вопросу, если вы пытаетесь считать очень быстрые импульсы (в этом случае я бы поэкспериментировал с несколькими методами).
Я не пробовал каждую комбинацию, но при условии, что определенные библиотеки pi написаны разумно, вы должны иметь возможность смешивать и сопоставлять их с переносимыми интерфейсами (например, использовать обычный I2C API и wiringPi для PWM), если вы используете их для отдельные контакты. Это может показаться странным подходом, но имеет смысл, если вы работаете с модульным кодом и хотите сделать отдельные части максимально переносимыми. Например, если вы хотите написать интерфейс для датчика I2C, основывайте его на API драйвера ядра. Затем, если вы хотите использовать это в программе с ШИМ, используйте одну из трех библиотек для ШИМ. Код, написанный с использованием pigpio / wiringPi / libbcm2835, будет работать только на Raspberry Pi; Код, написанный с использованием API драйверов ядра, будет работать в любой системе Linux.