nidaqmx
Official NI-DAQmx Python API
What it is and what it does
nidaqmx is the official Python wrapper around the NI-DAQmx C API, letting you write instrumentation and data acquisition applications that control National Instruments DAQ hardware. It abstracts the low-level C interface into an object-oriented Python layer, handling tasks (collections of channels with timing and triggering), virtual channels (software representations of physical measurement points), and both software and hardware-timed acquisition or generation.
You create a task, add analog or digital input/output channels with specified ranges and configurations, set up timing parameters, and read or write data. The package supports finite and continuous acquisition modes, multiple channels per task, and hardware clocking for precise timing. It requires the NI-DAQmx driver to be installed separately on your system and works on Windows and Linux where that driver is supported.
Use it for:
- Acquire voltage or current measurements from analog sensors connected to an NI DAQ device at specified sample rates.
- Generate analog or digital signals from a DAQ device to control external hardware or test equipment.
- Build automated test systems that synchronize measurement and control using hardware timing and triggering.
- Stream continuous data from multiple channels simultaneously with hardware-controlled sample timing.
- Prototype measurement applications in Python before deploying to production NI systems.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Provides a Python API to control and acquire data from National Instruments DAQ devices, wrapping the NI-DAQmx C library through ctypes for analog/digital input-output, timing, and triggering.
Yes. This is the official, actively maintained API for NI DAQ hardware in Python, with no known vulnerabilities, permissive MIT licensing, and low install friction. Install it if you own or have access to NI DAQ hardware and need to control it from Python. Do not install if you do not have the NI-DAQmx driver available on your system or lack compatible hardware.
Install
nidaqmx on PyPI
pip
pip install nidaqmxuv
uv add nidaqmxpoetry
poetry add nidaqmxInstalling nidaqmx
Before you install
Low friction installation via pip; actively maintained with a release 7 days ago and recent commits. Depends on 10 runtime packages including numpy and click, all common and stable.
License in practice
MIT license (permissive); you can use, modify, and distribute this package freely in commercial and private projects with minimal restrictions.
Quickstart
import nidaqmx
with nidaqmx.Task() as task:
task.ai_channels.add_ai_voltage_chan("Dev1/ai0", min_val=-10.0, max_val=10.0)
data = task.read()
Requires NI-DAQmx driver to be installed on the system; supports CPython 3.9+ and PyPy3 (except gRPC use cases); Windows and Linux only where the driver is supported.
Verify before relying
- Whether all 10 runtime dependencies (click, deprecation, distro, hightime, nitypes, numpy, python-decouple, requests, typing_extensions, tzlocal) are required for core DAQ functionality or only for optional features like gRPC.
- Performance characteristics and latency guarantees for hardware-timed acquisition at various sample rates.
- Compatibility matrix between specific nidaqmx versions and NI-DAQmx driver versions beyond 'all versions supported'.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (<4.0,>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 10 — click, deprecation, distro, hightime, nitypes, numpy, python-decouple, requests, typing_extensions, tzlocal |
| Maintenance | actively maintained — 7 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 117,351/month — #12,166 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: nidaqmx-1.6.0-py3-none-any.whl
Keywords: nidaqmx, nidaq, daqmx, daq
Tags
More Hardware Drivers packages
Provides Python abstractions and utilities for…
copyleft · top 5,000 on PyPI
pyusbPyUSB provides Python access to USB devices on…
permissive · top 5,000 on PyPI
pyftdiPyFtdi provides a pure-Python user-space driver…
permissive · top 15,000 on PyPI
libusb1Python wrapper for libusb-1.0 that enables…
copyleft · top 15,000 on PyPI
pyjoulescope-driverPython bindings for the Joulescope DC energy…
permissive · top 15,000 on PyPI
dlipowerManages Digital Loggers web-based network power…
permissive · top 15,000 on PyPI
pyadi-iiopyadi-iio provides Python classes that wrap…
permissive · top 15,000 on PyPI
pymata-expressAn asyncio-based Python client for controlling…
agpl · top 15,000 on PyPI
dash-daqProvides interactive data acquisition and…
permissive · top 15,000 on PyPI
pylibiioPython bindings for libiio, a library for…
copyleft · top 15,000 on PyPI
phidget22Phidget22 is the official Python library for…
permissive · top 15,000 on PyPI
joulescopeJoulescope is a Python driver for the…
permissive · top 15,000 on PyPI
logic2-automationPython client library for controlling Saleae…
unclear · top 15,000 on PyPI
qm-octaveSDK for controlling Quantum Machine's Octave…
permissive · top 15,000 on PyPI
npTDMSRead and write TDMS files (LabVIEW data format)…
copyleft · top 15,000 on PyPI