O pacote python-can fornece suporte a [[Rede de área de controlador|redes CAN]] para desenvolvedores que usam a linguagem [[Linguagem de programação Python|Python]]; fornecendo abstrações comuns para diferentes dispositivos de hardware e um conjunto de utilitários para enviar e receber mensagens por um [[Rede de área de controlador|barramento CAN]].
A biblioteca atualmente suporta CPython, bem como PyPy, e funciona em Mac, Linux e Windows.
> Para instalar a biblioteca, use o comando `pip install python-can`.
**:: Referência ::** [python-can · PyPI](https://pypi.org/project/python-can/)
> [!Warning] Importante
> - A [[Rede de área de controlador|rede CAN]] permite apenas a comunicação de dados de 8 bytes. Portanto, o tamanho máximo da variável de dados da mensagem deve ser de 8 bytes.
> - [CAN](Rede%20de%20área%20de%20controlador.md) a ele. Para simulações, qualquer ID é válido. No entanto, em aplicações reais, este ID não deve entrar em conflito com outro.
# Exemplo de uso simples
```python
# import the library
import can
# create a bus instance using 'with' statement,
# this will cause bus.shutdown() to be called on the block exit; # many other interfaces are supported as well (see documentation)
with can.Bus(interface='socketcan',
channel='vcan0',
receive_own_messages=True) as bus:
# send a message
message = can.Message(arbitration_id=123, is_extended_id=True,
data=[0x11, 0x22, 0x33])
bus.send(message, timeout=0.2)
# iterate over received messages
for msg in bus:
print(f"{msg.arbitration_id:X}: {msg.data}")
# or use an asynchronous notifier
notifier = can.Notifier(bus, [can.Logger("recorded.log"), can.Printer()])
```