pynmeagps
NMEA protocol parser and generator
What it is and what it does
pynmeagps is a Python 3 parser for NMEA 0183 protocol messages, primarily targeting GNSS/GPS and maritime receivers. It reads, parses, and generates NMEA messages with no external runtime dependencies, making it lightweight and straightforward to integrate into applications that need to consume positioning data from GPS hardware or log files.
The library handles both standard and proprietary NMEA message types, with support for user-defined message definitions for custom applications. It provides stream-based reading (from serial ports, files, or sockets), static parsing of individual messages, and message generation. Latitude and longitude are exposed as signed decimal values for convenience, with helper methods to convert to other formats. The package is actively maintained, supports modern Python versions (3.10–3.14), and carries no external dependencies.
Use it for:
- Read real-time GPS coordinates from a stream-connected receiver for vehicle tracking or navigation applications.
- Parse NMEA log files to extract historical positioning data for analysis or replay.
- Integrate GNSS message handling into maritime or drone control systems that need to decode receiver output.
- Validate and transform NMEA messages between different formats or protocols in data pipelines.
- Develop custom GPS applications with support for proprietary receiver extensions via user-defined message definitions.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Parses and generates NMEA 0183 GPS/GNSS protocol messages, enabling Python applications to read and work with positioning data from GPS receivers and maritime devices.
Yes. The package is actively maintained, has zero known vulnerabilities, low install friction, and a permissive license. It solves a specific, well-defined problem (NMEA parsing) with no external dependencies. Install it if you need to work with GPS/GNSS protocol data in Python; skip it only if you need support for Python versions below 3.10 or have no use for NMEA message handling.
Install
pynmeagps on PyPI
pip
pip install pynmeagpsuv
uv add pynmeagpspoetry
poetry add pynmeagpsInstalling pynmeagps
Before you install
Low friction installation with no runtime dependencies. Active maintenance with a recent release (4 days old) and steady repository activity. Supports Python 3.10 through 3.14.
License in practice
BSD-3-Clause permissive license allows commercial and private use with minimal restrictions; attribution required.
Quickstart
from pynmeagps import NMEAReader
msg = NMEAReader.parse('$GNGLL,5327.04319,S,00214.41396,E,223232.00,A,A*68\r\n')
print(msg)
Requires Python >=3.10; stream-based reading requires a data source supporting read(n) -> bytes method.
Verify before relying
- Whether the package handles all NMEA 0183 v4 message types or only a documented subset beyond GNSS/GPS.
- Performance characteristics when parsing high-frequency streams from multiple concurrent receivers.
- Availability and completeness of proprietary NMEA message definitions mentioned in the documentation.
Package facts
| License | BSD-3-Clause (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 4 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 381,728/month — #7,094 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pynmeagps-1.1.7-py3-none-any.whl
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
gps3Provides Python clients to connect to a GPSD…
permissive · top 15,000 on PyPI
pyaisDecodes and encodes AIS (Automatic…
permissive · top 15,000 on PyPI
pynmea2Parses and generates NMEA 0183 sentences from…
permissive · top 15,000 on PyPI
pyrtcmParses RTCM3 differential GNSS protocol…
permissive · top 15,000 on PyPI
pyubx2Parses and generates UBX protocol messages from…
permissive · top 15,000 on PyPI
mgrsConverts between MGRS (Military Grid Reference…
permissive · top 15,000 on PyPI
lat-lon-parserParses latitude-longitude coordinate strings in…
permissive · top 15,000 on PyPI
searouteComputes the shortest sea route between two…
permissive · top 15,000 on PyPI
gpxpyParses, manipulates, and generates GPX files…
permissive · top 15,000 on PyPI
protobuf-decoderDecodes protobuf binary messages without…
permissive · top 15,000 on PyPI