$npx skillfedfor your agent

python-snap7

Pure Python S7 communication library for Siemens PLCs

Worth itPyPI HardwareReleased Aug 2026255.2K downloads / moMITPure Python

Decision gist · record as of 2026-08-14

pure-Python wheel — python_snap7-3.1.2-py3-none-any.whl
v3.1.2 · released 2026-08-10 · Python >=3.10

Yes. The library is actively maintained, production-stable (Development Status 5), has zero known vulnerabilities, and eliminates installation friction by being pure Python with no native dependencies. It is well-suited for industrial automation projects targeting Python 3.10+. The recent 3.1 release adds AsyncClient support and modern features. Install it if you need to communicate with Siemens S7 PLCs from Python.AI-flagged interpretation of the facts on this page — verify before relying

Before you install

  • Low friction: pure Python package with no native dependencies, works on Python 3.10+.
  • Repository is active with recent release 4 days old and 830 stars.

License · maintenance · safety

MIT (permissive) — MIT license permits commercial and private use with minimal restrictions; suitable for most industrial and commercial deployments.

last release 2026-08-10 (4 days) · last repo commit 2026-08-14 · 830 stars

0 known vulnerabilities (OSV.dev, 2026-08-14) · 255,247 downloads/mo, #8,481 on PyPI

Verify before relying

pip install python-snap7

import snap7

client = snap7.Client()
client.connect("192.168.1.10", 0, 1)
data = client.db_read(1, 0, 4)
client.disconnect()
  • Performance characteristics when handling high-frequency reads on large datasets
  • Compatibility with specific Siemens S7 PLC models and firmware versions
  • Production-readiness of heartbeat monitoring and auto-reconnect features
Same gist for agents: .md · .json

What it is and what it does

Python-snap7 is a pure Python implementation of the S7 protocol stack for communicating with Siemens S7 PLCs over Ethernet. As of version 3.0, it no longer wraps a C library; instead, the entire protocol stack (TPKT, COTP, and S7) is implemented in pure Python. This eliminates platform-specific shared libraries and makes installation straightforward across Windows, Linux, macOS, and ARM systems. The library provides both synchronous and asynchronous APIs for reading and writing PLC memory, with recent additions including tag-based read/write by symbolic name, multi-variable read optimization, S7 routing for remote PLCs, heartbeat monitoring with auto-reconnect, and PROFINET DCP network discovery.

The package targets industrial automation developers who need to interface Python applications with Siemens PLCs. It requires Python 3.10+ but has no external runtime dependencies, making it portable across diverse deployment environments. Version 3.1 adds AsyncClient for asyncio support, structured logging, and CLI tools.

Use it for

  • Read sensor data and device status from Siemens PLCs in real-time monitoring or data collection applications
  • Write control commands to PLCs from Python automation scripts or supervisory systems
  • Build async Python services that communicate with multiple PLCs concurrently without blocking
  • Discover and interact with PLCs on a network using PROFINET DCP and S7 routing
  • Integrate PLC communication into Python-based SCADA or industrial IoT platforms

Worth the install?

AI-flagged interpretation of the facts on this page. Verify before relying on it.

Worth it

Yes.

The library is actively maintained, production-stable (Development Status 5), has zero known vulnerabilities, and eliminates installation friction by being pure Python with no native dependencies. It is well-suited for industrial automation projects targeting Python 3.10+. The recent 3.1 release adds AsyncClient support and modern features. Install it if you need to communicate with Siemens S7 PLCs from Python.

Install

python-snap7 on PyPI

Before you install

Low friction: pure Python package with no native dependencies, works on Python 3.10+. Repository is active with recent release 4 days old and 830 stars.

License in practice

MIT license permits commercial and private use with minimal restrictions; suitable for most industrial and commercial deployments.

Quickstart

pip install python-snap7

import snap7

client = snap7.Client()
client.connect("192.168.1.10", 0, 1)
data = client.db_read(1, 0, 4)
client.disconnect()

Verify before relying

  • Performance characteristics when handling high-frequency reads on large datasets
  • Compatibility with specific Siemens S7 PLC models and firmware versions
  • Production-readiness of heartbeat monitoring and auto-reconnect features

Package facts

LicenseMIT permissive
Python supportSupports the current Python release >=3.10
Install frictionLow. Pure-Python wheel
Runtime dependenciesNone
MaintenanceActively maintained 4 days since the last release
Last repo commit
First released
Downloads255,247 / month, #8,481 on PyPI 30-day window, as of 2026-08-14
Known vulnerabilitiesNone known OSV.dev, checked 2026-08-14
Classifiers
Development Status :: 5 - Production/StableEnvironment :: ConsoleIntended Audience :: DevelopersIntended Audience :: ManufacturingOperating System :: POSIXProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Topic :: System :: Hardware

Evidence: python_snap7-3.1.2-py3-none-any.whl

Tags

Capabilities
siemens plc communications7 protocol pythonplc data read writes7 ethernet clientindustrial automation interfacesiemens plc drivers7 networking
Topics
industrial-automationsiemens-plcasync-support
PyPI keywords
snap7s7siemensplc

Let your AI agent find packages like this

Example. Real query, live index.

You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.

wish › “siemens plc communication”

  • python-snap7Pure Python library for reading and writing data to Siemens S7 PLCs…
  • pylogixPylogix reads and writes tag values from Rockwell Automation…
  • devolo-plc-apiProvides a Python API to communicate with devolo PLC (powerline…

Give your agent the search over MCP, or paste the wish link into any chat.

More Hardware packages

psutil Worth it
PyPI · Libraries · released Jan 2026

psutil retrieves real-time information about running processes and system resources (CPU, memory, disks, network, sensors) across multiple operating systems, enabling system monitoring, process profiling, and resource management.

permissive licensecompiled wheel · 3.6+
387.6Mdownloads / mo
nvidia-ml-py Worth it
PyPI · Python Modules · released Jun 2026

Python wrapper around NVIDIA's Management Library that exposes GPU monitoring and management functions through a Pythonic interface, converting C library calls to Python methods and error codes to exceptions.

Install it if you need to query or monitor NVIDIA GPUs from Python; the only blocker is requiring NVIDIA drivers and NVML on the target system.

BSD-3-Clausepure Python
21.0Mdownloads / mo
pynvml Skip
PyPI · Python Modules · released Sep 2025

Provides Python utilities for querying NVIDIA GPU device information through the NVIDIA Management Library (NVML).

BSD-3-Clausepure Python · 3.9+aging
3.5Mdownloads / mo
circular-dict With conditions
PyPI · Libraries · released May 2024

CircularDict is a Python dictionary that automatically removes oldest entries when it reaches a size limit (by item count or total bytes), acting as a bounded circular buffer for memory-controlled caching and data storage.

MITpure Python · 3.6+dormant
2.1Mdownloads / mo
libusb-package With conditions
PyPI · Hardware · released Jun 2026

Bundles libusb shared libraries for multiple platforms and architectures so Python projects can use libusb without requiring manual system installation.

Apache-2.0compiled wheel · 3.9+
1.6Mdownloads / mo
pyudev Worth it
PyPI · Libraries · released Oct 2025

pyudev is a pure Python binding for libudev that lets you enumerate, query, and monitor Linux devices and hardware from Python code.

Install it if you need programmatic access to udev from Python on Linux; it is the standard binding for this task.

copyleftpure Python · 3.9+
1.5Mdownloads / mo

See also pylogix · pyads · devolo-plc-api · zigpy-zigate · pyModbusTCP · elkm1-lib · smbus2 · pyisy · home-connect-async · PyVISA-py