Você não menciona um sistema operacional, como o Milliways, presumirei que você queira dizer Raspbian ou algum outro GNU / Linux. A IoT do Windows seria separada.
Todas as bibliotecas python são wrappers nas bibliotecas C, o que não é incomum. Criar as bibliotecas do zero em algo diferente de C seria. Há três:
Eles já existem há pelo menos alguns anos e são mantidos ativamente (por exemplo, a última versão do libbcm2835 foi de 3-4 meses atrás).
No entanto, você não precisa de nenhuma biblioteca, dependendo do que deseja fazer. Como mencionado, além da interface sysfs para coisas básicas, existem interfaces portáteis de nível C do usuário para I2C e SPI que usam drivers do kernel. Isso deixa o PWM - para acessar e usar os canais de hardware, você precisa usar uma dessas três bibliotecas. Ou, como joan menciona em um comentário sobre essa outra questão, se você estiver tentando contar pulsos muito rápidos (eu experimentaria alguns métodos nesse caso).
Eu não tentei todas as combinações, mas, presumindo que as bibliotecas específicas do pi sejam codificadas de maneira adequada, você deve poder combiná-las e combiná-las com as interfaces portáteis (por exemplo, use a API I2C regular e o wirePi for PWM), desde que você as use para pinos separados. Isso pode parecer uma abordagem estranha, mas faz sentido se você estiver trabalhando com código modular e quiser tornar as peças individuais o mais portáveis possível. Por exemplo, se você deseja escrever uma interface para um sensor I2C, baseie-a na API do driver do kernel. Então, se você deseja usá-lo em um programa com PWM, use uma das três bibliotecas para PWM. O código escrito com pigpio /iringPi / libbcm2835 funcionará apenas em um Raspberry Pi; O código escrito usando as APIs do driver do kernel funcionará em qualquer sistema Linux.