Skip to main content

Latest Version on PyPi Latest Version on conda-forge Supported Python implementations Downloads on PePy Monthly downloads on PePy

Documentation Github Actions workflow status Test coverage reports on Coveralls.io This project uses the black formatter.

The Controller Area Network is a bus standard designed to allow microcontrollers and devices to communicate with each other. It has priority based bus arbitration and reliable deterministic communication. It is used in cars, trucks, boats, wheelchairs and more.

The can package provides controller area network support for Python developers; providing common abstractions to different hardware devices, and a suite of utilities for sending and receiving messages on a can bus.

The library currently supports CPython as well as PyPy and runs on Mac, Linux and Windows.

Library Version

Python

2.x

2.6+, 3.4+

3.x

2.7+, 3.5+

4.0+

3.7+

4.3+

3.8+

4.6+

3.9+

Features

  • common abstractions for CAN communication

  • support for many different backends (see the docs)

  • receiving, sending, and periodically sending messages

  • normal and extended arbitration IDs

  • CAN FD support

  • many different loggers and readers supporting playback: ASC (CANalyzer format), BLF (Binary Logging Format by Vector), MF4 (Measurement Data Format v4 by ASAM), TRC, CSV, SQLite, and Canutils log

  • efficient in-kernel or in-hardware filtering of messages on supported interfaces

  • bus configuration reading from a file or from environment variables

  • command line tools for working with CAN buses (see the docs)

  • more

Example usage

pip install python-can

# 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()])

You can find more information in the documentation, online at python-can.readthedocs.org.

Discussion

If you run into bugs, you can file them in our issue tracker on GitHub.

Stackoverflow has several questions and answers tagged with python+can.

Wherever we interact, we strive to follow the Python Community Code of Conduct.

Contributing

See doc/development.rst for getting started.

Release files for python-can 4.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for python-can 4.6.1
File Size Uploaded
python_can-4.6.1.tar.gz 1.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for python-can 4.6.1
File Interpreter ABI Platform
python_can-4.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.5 MB

Release files / python_can-4.6.1.tar.gz

Download URL python_can-4.6.1.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
290fea135d04b8504ebff33889cc6d301e2181a54099116609f940825ffe5005
BLAKE2b-256 checksum
How to use checksums
74f9a9d99d36dd33be5badb747801c9255c3c526171a5542092eaacc73350fb8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release files / python_can-4.6.1-py3-none-any.whl

Download URL python_can-4.6.1-py3-none-any.whl
Size 277.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
17f95255868a95108dcfcb90565a684dad32d5a3ebb35afd14f739e18c84ff6c
BLAKE2b-256 checksum
How to use checksums
5834e4ac153acdbcfba7f48bc73d6586a74c91cc919fcc2e29acbf81be329d1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 12, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

4.6.1 This release

2 release files

4.6.0

2 release files

4.5.0

2 release files

4.4.2

2 release files

4.4.0

2 release files

4.3.1

2 release files

4.3.0

2 release files

4.2.2

2 release files

4.2.1

2 release files

4.2.0

2 release files

4.1.0

2 release files

4.0.0

5 release files

3.3.4

1 release file

3.3.3

1 release file

3.3.2

1 release file

3.3.1

1 release file

3.3.0

1 release file

3.2.1

1 release file

3.2.0

1 release file

3.1.1

2 release files

3.1.0

2 release files

3.0.0

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.5.2

2 release files

1.5.0

2 release files

1.4.3

2 release files

1.4.2

2 release files

1.4.1

1 release file

1.4

1 release file

1.3

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page