The PyEpics package provides low-level (C-like), procedural (caput/caget,…) and object-programmed interfaces for EPICS channel access. This allows for simple as well as sophisticated code development for beamline instrument control using Python. The package is implemented using the Python ctypes package to wrap the EPICS CA library ( The procedure access routines allow reading or setting EPICS PVs with simple calls, as well as callbacks to python routines to monitor changes in PVs or process alarms in response to an out-of-range value. PyEpics device objects are designed to access a family of PVs for a specific type of EPICS device (motors, scalers,…) and simplify their use. In addition, PyEpics supports a number of higher-level tools for GUIs, data logging, strip-chart graphics, etc.