Registry / database / ophyd
library1.11.2pypypi✓ verified 84d ago

Ophyd is a hardware abstraction library for the Bluesky framework with an emphasis on EPICS. It provides a device-oriented API for control system signals, motors, area detectors, and more. Currently at version 1.11.1, it is under active development with regular releases. Requires Python >=3.8.

pip install ophyd
INSTALL
IMPORT
SIG · OPHYD
O
ophyd
databasepythonv1.11.2
Install
5.6s avg
Import
2350ms
Disk
113MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v1.11.2 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.95 runs
installs and imports cleanly · install 0.0s · import 2.448s · 110.9MB
glibc
py 3.103.95 runs
installs and imports cleanly · install 5.6s · import 2.252s · 107MB
113MB installed
● package 113MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

EpicsSignal
from ophyd import EpicsSignal
Simple EPICS PV signal
EpicsMotor
from ophyd import EpicsMotor
EPICS motor record device
Device
from ophyd import Device
Base class for composite devices
Signal
from ophyd import Signal
Base signal class for internal or simulated signals
Component
from ophyd import Component
from ophyd.device import Component
Component is re-exported at top-level; importing from ophyd.device is deprecated.
DynamicDeviceComponent
from ophyd import DynamicDeviceComponent
from ophyd.device import DynamicDeviceComponent
Same as Component; prefer top-level import.

Basic usage: create an EPICS signal and motor, define a composite device with Components, and wait for connections.

from ophyd import EpicsSignal, EpicsMotor from ophyd import Component, Device # Create a simple EPICS signal sig = EpicsSignal('MYPV:PREFIX', name='my_signal') sig.wait_for_connection() print(sig.get()) # Create a motor motor = EpicsMotor('MYMOTOR:PREFIX', name='my_motor') motor.wait_for_connection() print(motor.user_readback.get()) # Define a composite device class MyDevice(Device): x = Component(EpicsMotor, 'X') y = Component(EpicsMotor, 'Y') detector = Component(EpicsSignal, 'Det') dev = MyDevice('MYDEV:', name='my_device') dev.wait_for_connection() print(dev.detector.get())
Debug
Known issues
breakingInophyd v1.10.0, the EPICS backend API changed. Fallback backends are now class-based instead of function-based. Code using custom backends may need updates.
fix
Review migration notes at https://blueskyproject.io/ophyd/upcoming-changes.html
affects: >=1.10.0
deprecatedThe function 'set_and_wait' is deprecated since v1.7.0 and may be removed in future releases.
fix
Use Signal.set() with await or status events instead.
affects: >=1.7.0
gotchaEpicsSignal and EpicsMotor require a connection to the EPICS PV. If the PV does not exist, connecting will block until timeout (default 2.0 seconds in v1.10.5+).
fix
Set 'wait_for_connection=False' and check connection status manually, or increase timeout via timeout kwarg.
affects: all
gotchaDeviceStatus reports a fraction of 1.0 once complete as of v1.7.0. Code relying on a fraction of 0.0 after completion will break.
fix
Adjust code to handle updated fraction value.
affects: >=1.7.0, <1.7.0? earlier versions had 0.0? Actually v1.7.0 changed to 1.0.
breakingIn v1.8.0, isort was adopted; imports may need reorganization. Also, setuptools-scm replaced manual versioning.
fix
No direct breakage, but import ordering may require changes if using strict flake8 or isort checks.
affects: >=1.8.0
deprecatedThe 'user_v2' module is removed as of v1.10.0. Use the standard 'ophyd' API instead.
fix
Replace 'from ophyd import user_v2' with direct imports from ophyd.
affects: >=1.10.0
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'epics'
Missing PyEpics package for EPICS communication.
fix
pip install pyepics or conda install -c conda-forge pyepics
TimeoutError: Connection to PV '...' timed out after 2.00 seconds
EPICS PV not available or network issue.
fix
Verify PV exists and network is reachable. Increase timeout via 'timeout' parameter in EpicsSignal(..., timeout=10).
ImportError: cannot import name 'Component' from 'ophyd.device'
Direct import from internal module instead of top-level.
fix
Use 'from ophyd import Component'
AttributeError: 'EpicsSignal' object has no attribute 'set_and_wait'
Deprecated function removed or renamed.
fix
Replace with 'signal.set(value)' and use status objects or await.
Upgrade
Version history
1.11.2latest on PyPI · released Jun 4, 2026
Audit
Dependencies
epics-baseoptionalEPICS channel access for PyEpics backend
pyepicsoptionalRequired for EPICS PV communication unless using caproto or simulated signals
caprotooptionalAlternative EPICS CA backend
numpyrequiredArray support for signals
Agent activity
5 hits · last 30 days
node
4
Resources
ophyd — pip install ophyd · libregistry