Install & Compatibility
Where this runs
tested against v1.2.3 · 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
muslpy 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 0.252s · 89.8MB
glibcpy 3.10–3.95 runs
installs and imports cleanly · install 3.7s · import 0.274s · 86MB
89MB installed
● package 89MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
ULog
✓ from pyulog import ULog
✗ from pyulog.ulog import ULog
ULog is re-exported in pyulog.__init__.py. Direct submodule import breaks in v1.0+.
messages
✓ from pyulog import ULog
✗ from pyulog.messages import messages
messages is accessed via ULog instance, not a separate import.
Basic usage: read a .ulg file and iterate over topics.
from pyulog import ULog
# Parse a ULog file
log = ULog('sample.ulg')
# Access data
for topic, msg_list in log.data_list:
print(f"Topic: {topic.name}, {len(msg_list)} messages")
ulog2csv --version
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'pyulog.ulog'
Direct import of submodule when using pyulog >=1.0.
fixUse `from pyulog import ULog` instead.
AttributeError: 'ULog' object has no attribute 'messages'
`messages` was a class attribute in older versions, removed in v1.2.0.
fixAccess messages via `log.data_list`; each element is a (topic, messages_list) tuple.
Upgrade
Version history
1.2.3latest on PyPI · released Jun 16, 2026
Audit
Dependencies
No dependency data recorded yet.