Skip to main content

About

Python-snap7 is a pure Python S7 communication library for interfacing with Siemens S7 PLCs.

The name “python-snap7” is historical — the library originally started as a Python wrapper around the Snap7 C library. As of version 3.0, the C library is no longer used, but the name is kept for backwards compatibility.

Python-snap7 is tested with Python 3.10+, on Windows, Linux and OS X.

The full documentation is available on Read The Docs.

Quick Start

Connect to any S7 PLC:

import snap7

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

No native libraries or platform-specific dependencies are required.

Async support:

import asyncio
import snap7

async def main():
    async with snap7.AsyncClient() as client:
        await client.connect("192.168.1.10", 0, 1)
        data = await client.db_read(1, 0, 4)

asyncio.run(main())

What’s New in 3.1

  • AsyncClient for asyncio support

  • Tag API – read/write by name: client.read_tag("DB1.DBD0:REAL") with PLC4X and nodeS7 dialect support

  • Multi-variable read optimizer – merges scattered reads into minimal PDU exchanges

  • S7 routing – connect to PLCs on remote subnets via a gateway PLC

  • Heartbeat monitoring and auto-reconnect with exponential backoff

  • Structured logging with PLC connection context

  • PROFINET DCP network discovery

  • CLI tools for PLC interaction (pip install "python-snap7[cli]")

  • Numerous bug fixes – see CHANGES.md for the full list

Version 3.0 – Pure Python Rewrite

Version 3.0 was a ground-up rewrite of python-snap7. The library no longer wraps the C snap7 shared library – instead, the entire S7 protocol stack (TPKT, COTP, and S7) is implemented in pure Python.

  • Portability: No more platform-specific shared libraries (.dll, .so, .dylib). Works on any platform that runs Python – including ARM, Alpine Linux, and other environments where the C library was difficult or impossible to install.

  • Easier installation: Just pip install python-snap7. No native dependencies, no compiler toolchains, no manual library setup.

  • Easier to extend: New features and protocol support can be added directly in Python.

Installation

Install using pip:

$ pip install python-snap7

No native libraries or platform-specific dependencies are required — python-snap7 is a pure Python package that works on all platforms.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_snap7-3.1.2.tar.gz (202.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_snap7-3.1.2-py3-none-any.whl (142.2 kB view details)

Uploaded Python 3

File details

Details for the file python_snap7-3.1.2.tar.gz.

File metadata

  • Download URL: python_snap7-3.1.2.tar.gz
  • Upload date:
  • Size: 202.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for python_snap7-3.1.2.tar.gz
Algorithm Hash digest
SHA256 81913da5cff791c33d9f2ac301f2226a44487792ea8ecc2a9d63a2fbd6895c62
MD5 18dfce831565a3ae3cb9ddbfc45a9da6
BLAKE2b-256 627878b7b73330e357b46d2e83141259776ebf5d6c84dfb2611a88506f19d0e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_snap7-3.1.2.tar.gz:

Publisher: publish-pypi.yml on gijzelaerr/python-snap7

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file python_snap7-3.1.2-py3-none-any.whl.

File metadata

  • Download URL: python_snap7-3.1.2-py3-none-any.whl
  • Upload date:
  • Size: 142.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for python_snap7-3.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 17a486966d415e54e0b8e2dad3204323e16c445fbc55af44d9cd3173c9573de2
MD5 f9d84532e614fcdcd8f7d770c3911bb5
BLAKE2b-256 9d17a883528236009069c421de3c426b0611bb9d0241cfd88c0cec30d87908ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for python_snap7-3.1.2-py3-none-any.whl:

Publisher: publish-pypi.yml on gijzelaerr/python-snap7

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page