pyicu
Python extension wrapping the ICU C++ API
Decision gist · record as of 2026-08-14
Yes, if you need production-grade internationalization and Unicode handling. PyICU is stable (Production/Stable status, active maintenance, no known vulnerabilities) and widely used. Install only if your system can satisfy the high build-time friction: pre-built packages exist for major platforms, but source builds require ICU libraries, pkg-config, and a matching C++ compiler. Avoid if you need a pure-Python solution or cannot install system dependencies.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- The ICU C++ libraries and development headers must be installed on your system before installing PyICU.
- On macOS, this typically requires Homebrew or Macports; on Linux, the libicu-dev package; on Windows, manual ICU installation.
- The C++ compiler used must match your Python distribution's compiler.
License · maintenance · safety
MIT (permissive) — PyICU is licensed under MIT, a permissive open-source license that allows commercial and private use with minimal restrictions.
last release 2026-03-20 (147 days)
0 known vulnerabilities (OSV.dev, 2026-08-14) · 681,592 downloads/mo, #5,362 on PyPI
Alternatives
Verify before relying
# After installing ICU libraries and PyICU
import pyicu
# Create a collator for locale-aware string comparison
locale = pyicu.Locale('en_US')
collator = pyicu.Collator.createInstance(locale)
result = collator.compare('apple', 'Apple')- Whether pre-built wheels are available for the current version on PyPI for common platforms
- Current maintenance activity and response time for issues on the GitLab repository
- Performance characteristics compared to pure-Python Unicode libraries for typical workloads
- Specific API surface and feature completeness relative to native ICU C++ library
What it is and what it does
PyICU is a Python extension that wraps the ICU (International Components for Unicode) C++ libraries, providing direct access to the Unicode Consortium's internationalization and localization tools. It implements much of the Unicode Standard, Unicode Technical Standards, and Unicode CLDR, enabling developers to handle text processing tasks that require locale awareness, proper collation, script detection, and multilingual support.
The package is used when you need production-grade Unicode and internationalization features beyond Python's built-in string handling. It handles collation, number and date formatting in different locales, text normalization, bidirectional text, script detection, and other complex text operations. Because PyICU is a C++ extension wrapping native libraries, it offers performance and feature completeness that pure-Python alternatives cannot match, but at the cost of requiring system-level ICU installation and compilation during setup.
Use it for
- Sort user-generated text correctly in different languages using locale-aware collation rules
- Format dates, times, and numbers according to regional conventions for international applications
- Normalize Unicode text and detect script boundaries in multilingual documents
- Build search and filtering systems that respect language-specific text comparison rules
- Process bidirectional text and handle complex script combinations
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need production-grade internationalization and Unicode handling.
PyICU is stable (Production/Stable status, active maintenance, no known vulnerabilities) and widely used. Install only if your system can satisfy the high build-time friction: pre-built packages exist for major platforms, but source builds require ICU libraries, pkg-config, and a matching C++ compiler. Avoid if you need a pure-Python solution or cannot install system dependencies.
Install
pyicu on PyPI
Before you install
Installation requires high friction: the ICU C++ libraries and headers must be pre-installed on your system, and PyICU builds from source rather than offering pre-built wheels on all platforms. Pre-built packages are available on macOS (Homebrew, Macports), Debian, Ubuntu, Alpine, NetBSD, and OpenBSD; building from source requires pkg-config and a C++ compiler matching your Python distribution.
The ICU C++ libraries and development headers must be installed on your system before installing PyICU. On macOS, this typically requires Homebrew or Macports; on Linux, the libicu-dev package; on Windows, manual ICU installation. The C++ compiler used must match your Python distribution's compiler.
License in practice
PyICU is licensed under MIT, a permissive open-source license that allows commercial and private use with minimal restrictions.
Quickstart
# After installing ICU libraries and PyICU
import pyicu
# Create a collator for locale-aware string comparison
locale = pyicu.Locale('en_US')
collator = pyicu.Collator.createInstance(locale)
result = collator.compare('apple', 'Apple')
Verify before relying
- Whether pre-built wheels are available for the current version on PyPI for common platforms
- Current maintenance activity and response time for issues on the GitLab repository
- Performance characteristics compared to pure-Python Unicode libraries for typical workloads
- Specific API surface and feature completeness relative to native ICU C++ library
Package facts
| License | MIT permissive |
| Python support | Not specified |
| Install friction | High. Source build required |
| Runtime dependencies | None |
| Maintenance | Actively maintained 147 days since the last release |
| First released | |
| Downloads | 681,592 / month, #5,362 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableEnvironment :: ConsoleIntended Audience :: DevelopersLicense :: OSI ApprovedOperating System :: OS IndependentProgramming Language :: C++Programming Language :: PythonProgramming Language :: Python :: 2Programming Language :: Python :: 3Programming Language :: Python :: Implementation :: CPythonProgramming Language :: Python :: Implementation :: PyPyTopic :: Software Development :: InternationalizationTopic :: Software Development :: Localization |
Evidence: pyicu-2.16.2.tar.gz
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “unicode text processing python”
- pyicuPyICU wraps the ICU C++ libraries to provide Python access to Unicode…
- unisegDetermines Unicode text segmentation boundaries—grapheme clusters,…
- unicodedata2Provides updated Unicode character data tables via a backport of…
Give your agent the search over MCP, or paste the wish link into any chat.
More Internationalization packages
Measures the displayed width of Unicode strings in terminals, accounting for wide characters, combining marks, and terminal escape sequences that standard Python string functions mishandle.
Install it if your application formats text for terminals and handles non-ASCII characters.
Babel provides internationalization (i18n) and localization (l10n) utilities for Python applications, handling date/time formatting, number localization, message translation, and timezone operations across different languages and locales.
Install it if your application needs to support multiple languages or locales.
Provides programmatic access to ISO standard databases for countries, subdivisions, languages, currencies, and scripts through a Python API.
Converts numbers to their word representations in multiple languages, supporting cardinal numbers, ordinals, years, and currency formats.
Install it if you need multilingual number-to-words conversion.
polib reads, writes, and manipulates gettext translation files (PO, POT, and MO formats), allowing you to load, iterate, modify entries, and create translation catalogs programmatically.
Install it if you need to work with gettext files programmatically.
Provides Unicode normalization (NFC, NFD, NFKC, NFKD) using Unicode Standard version 17.0 data, independent of the host Python environment's built-in Unicode version.
Install it if your application requires consistent normalization across different systems or if you need to target a specific Unicode Standard version.
See also PyICU-binary · zope.i18n · flufl.i18n · uniseg · normality · quart_babel · oslo.i18n · pyuca · translationstring