# Installation
URL: /installation
Install OpenHTF with pip on Windows, Linux or macOS. Supported Python versions, optional extras for USB and serial plugs, virtual environments, and common install errors.
OpenHTF is a pure-Python package published on PyPI as `openhtf`.
Python
**3.10 or newer** (OpenHTF 1.6.x). The last release for Python 3.7–3.9 is 1.5.2.
OS
Windows, Linux, macOS. Colored console output uses `colorama` and works on all three.
Browser
Any modern browser for the Operator UI; it is served by the test process.
Use a virtual environment per test station or per project so instrument-library versions stay pinned:
Check the install:
The core package has no hardware dependencies. Extras pull in the libraries the bundled plugs need:
Extra
Installs
Enables
`openhtf[usb-plugs]`
`libusb1`, `M2Crypto`
`openhtf.plugs.usb`: ADB and Fastboot over USB (Android DUTs).
`openhtf[serial-collection-plug]`
`pyserial`
`openhtf.plugs.generic.serial_collection.SerialCollectionPlug`.
`openhtf[examples]`
`pandas`
The upstream `measurements.py` example (`to_dataframe()`).
`openhtf[update-units]`
`xlrd`
Only for regenerating `units.py` from the UNECE spreadsheet; not needed to use units.
Your own plugs bring their own libraries: `pip install pyvisa pyvisa-py` for SCPI instruments, `pyserial` for serial DUTs, `pymodbus` for PLCs.
A station should not pick up a new OpenHTF release by accident. Pin it in `requirements.txt`:
Every page on this site states which release its examples were verified against; Releases lists what changed between versions.
To try unreleased fixes from `master`: