python-snap7 is a pure-Python library for communicating with Siemens S7 PLCs using the classic S7 protocol. It supports S7-300 and S7-400 controllers, as well as S7-1200 and S7-1500 controllers with PUT/GET access enabled. It supports Python 3.10+ on Windows, Linux, and macOS without native dependencies.
Install from PyPI:
pip install python-snap7
from s7 import Client
client = Client()
client.connect("192.168.1.10", 0, 1)
data = client.db_read(1, 0, 4)
client.disconnect()
The s7 package is the recommended import. The snap7 package name is
also available for backwards compatibility.
Read the full documentation at python-snap7.readthedocs.io.
For native communication with S7-1200 and S7-1500 controllers without PUT/GET, see the standalone s7commplus package.