pysoem
Cython wrapper for the SOEM Library
What it is and what it does
PySOEM wraps the Simple Open EtherCAT Master Library in Python via Cython, allowing developers to build EtherCAT master applications in Python rather than C. It handles the low-level complexity of EtherCAT protocol communication—including process data I/O, SDO (Service Data Object) read/write, EEPROM access, and FoE (Firmware over EtherCAT)—so you can focus on device testing and control logic.
The package is distributed as pre-compiled wheels for modern Python versions (3.10–3.12) on Linux, macOS, and Windows, eliminating the need to compile SOEM yourself. It is actively maintained, with recent updates adding No-GIL support and ARM64 wheel availability. Real-time applications using PySOEM require special consideration, and Linux/macOS execution requires administrator privileges; Windows requires a packet capture driver (Npcap or WinPcap).
Use it for:
- Test and validate EtherCAT slave devices during development without writing C code.
- Build Python-based automation scripts for industrial control systems that communicate over EtherCAT networks.
- Read and write device configuration via SDO registers and EEPROM in a Python environment.
- Perform firmware updates on EtherCAT devices using FoE (Firmware over EtherCAT) from Python.
- Monitor and log real-time process data from multiple EtherCAT slaves in a single master application.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
PySOEM is a Cython wrapper for the Simple Open EtherCAT Master Library that enables Python applications to communicate with and test EtherCAT slave devices over industrial networks.
Yes, if you need to control or test EtherCAT devices from Python and can meet the runtime requirements (administrator privileges on Linux/macOS, Npcap/WinPcap on Windows). The package is actively maintained, has no known vulnerabilities, and offers permissive licensing. Medium install friction is typical for industrial protocol libraries with compiled extensions; pre-built wheels mitigate most of that cost. Not suitable if you need Python versions older than 3.10 or cannot run with elevated privileges.
Install
pysoem on PyPI
pip
pip install pysoemuv
uv add pysoempoetry
poetry add pysoemInstalling pysoem
Before you install
Medium install friction due to compiled C extensions requiring platform-specific wheels. Wheels are available for Python 3.10–3.12 across Linux (x86_64, aarch64, musl), macOS (Intel and ARM), and Windows (64-bit). Linux and macOS require administrator privileges at runtime; Windows requires Npcap or WinPcap installed.
License in practice
MIT license is permissive, allowing commercial and private use with minimal restrictions. You may use, modify, and distribute this package freely provided you include the original license notice.
Quickstart
import pysoem
master = pysoem.Master()
master.open('eth0')
master.scan_and_group()
master.config_init()
# Read/write process data and SDO registers as needed
master.close()
Linux and macOS require administrator/root privileges to execute scripts using PySOEM. Windows requires Npcap (in WinPcap API-compatible mode) or WinPcap to be installed before use.
Verify before relying
- Whether Python 3.14 wheels mentioned in v1.1.13 changelog are actually available on PyPI or planned for a future release.
- Real-time performance guarantees or latency characteristics for industrial control loops.
- Support status for Python versions older than 3.10 or newer than 3.12.
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 215 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 78,834/month — #14,403 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pysoem-1.1.13-cp310-cp310-macosx_10_9_x86_64.whl; pysoem-1.1.13-cp310-cp310-macosx_11_0_arm64.whl; pysoem-1.1.13-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pysoem-1.1.13-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pysoem-1.1.13-cp310-cp310-musllinux_1_2_aarch64.whl; pysoem-1.1.13-cp310-cp310-musllinux_1_2_x86_64.whl; pysoem-1.1.13-cp310-cp310-win_amd64.whl; pysoem-1.1.13-cp311-cp311-macosx_10_9_x86_64.whl; pysoem-1.1.13-cp311-cp311-macosx_11_0_arm64.whl; pysoem-1.1.13-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pysoem-1.1.13-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pysoem-1.1.13-cp311-cp311-musllinux_1_2_aarch64.whl; pysoem-1.1.13-cp311-cp311-musllinux_1_2_x86_64.whl; pysoem-1.1.13-cp311-cp311-win_amd64.whl; pysoem-1.1.13-cp312-cp312-macosx_10_13_x86_64.whl; pysoem-1.1.13-cp312-cp312-macosx_11_0_arm64.whl; pysoem-1.1.13-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; pysoem-1.1.13-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; pysoem-1.1.13-cp312-cp312-musllinux_1_2_aarch64.whl; pysoem-1.1.13-cp312-cp312-musllinux_1_2_x86_64.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
cysignalsProvides interrupt and signal handling…
copyleft · top 15,000 on PyPI
pyisyPyISY is a Python library for asynchronous…
permissive · top 15,000 on PyPI
PyVISA-pyPyVISA-py is a pure Python backend for the VISA…
permissive · top 5,000 on PyPI
pypcapPython wrapper around libpcap that lets you…
unclear · top 15,000 on PyPI
canopenA Python implementation of the CANopen standard…
permissive · top 5,000 on PyPI
pyserial-asyncioAdds async/await support to pyserial for…
permissive · top 15,000 on PyPI
cymemcymem provides memory-management helpers for…
permissive · top 5,000 on PyPI
pyeapipyeapi is a Python library that wraps Arista…
permissive · top 15,000 on PyPI
PyVISAPyVISA provides Python bindings to VISA…
permissive · top 5,000 on PyPI
py-ccm15Provides an async Python interface to…
permissive · top 15,000 on PyPI