Upgrade from Labelme v6 to v7
Unofficial preview. Docsbook assembled this page from the public
wkentaro/labelmeREADME.mdandexamples/directory. It is not affiliated with, endorsed by, or maintained by the Labelme project. The official documentation lives at labelme.io/docs.
Labelme v7.0.0 raises the platform floor and removes the Python import surface. Four things change, and three of them can break a working setup silently.
What changed#
| Area | v6.3.x | v7.x |
|---|---|---|
| Qt binding | PyQt5 (Qt5) | PySide6 (Qt6) — pip install labelme now pulls PySide6 |
| Python | 3.10 – 3.11 | 3.12 – 3.14 |
| Operating system | Includes older OSes Qt5 supported | 64-bit macOS, Windows or Linux |
| Python imports | Internal modules importable | Privatised, underscore-prefixed — no public API |
| Config booleans | yes/no/on/off read as booleans |
Parsed by ruamel.yaml as YAML 1.2 — those spellings read as strings |
Fix your config booleans first#
This is the change most likely to pass unnoticed. ~/.labelmerc is now parsed with ruamel.yaml as YAML 1.2, so yes, no, on and off — in any capitalisation — are read as strings rather than booleans.
A setting written this way does not error. It is simply no longer the boolean you meant. Rewrite every boolean option to true or false:
# before, on v6
auto_save: yes
# after, on v7
auto_save: trueReplace any imports of Labelme internals#
import labelme.app, import labelme.utils, import labelme.widgets and similar no longer work. Labelme is an application, not a library, and v7 renamed its internal modules with underscore prefixes.
Two supported routes forward:
- Read the JSON format directly in your own code.
examples/utils.pyis the reference implementation and depends only on the standard library, numpy and PIL — copy it next to your scripts and adapt it. See reading annotations in Python. - Stay on v6 and vendor what you need:
pip install 'labelme<7'All previous releases remain installable from PyPI, so existing pins keep working.
Decide whether to move at all#
Stay on v6.3.x if you need PyQt5 or Qt5, Python 3.10 or 3.11, or an operating system Qt6 does not cover. That line receives critical fixes only, on a best-effort basis with no release cadence: security vulnerabilities, data-loss or annotation-corruption bugs, and install or launch breakage caused by upstream dependency drift. Feature backports and non-critical bugs are out of scope.
Everything else — new features, new AI models, new exports — happens on v7.x.
Related#
- Platform support — the full version matrix
- Configuration reference — the boolean options to rewrite
- Editions — pip package versus standalone app