Optional speedup extension#
charset-normalizer will always remain pure Python, meaning that a environment without any build capabilities will run this program without any additional requirements.
Nonetheless, starting from the version 3.0 we introduce and publish some platform specific wheels including a pre-built extension.
Most of the time is spent in the module md.py so we decided to “compile it” using Mypyc.
It does not require to have a separate code base
Our project code base is rather simple and lightweight
Mypyc is robust enough today
Four times faster!
If your platform and/or architecture is not served by this swift optimization you may compile it easily yourself. Following those instructions (provided you have the necessary toolchain installed):
export CHARSET_NORMALIZER_USE_MYPYC=1 pip install mypy build wheel pip install charset-normalizer --no-binary :all:
How not to?#
You may install charset-normalizer without the speedups by directly using the universal wheel
(most likely hosted on PyPI or any valid mirror you use) with
E.g. when installing
requests and you don’t want to use the
charset-normalizer speedups, you can do:
pip install requests --no-binary charset-normalizer
When installing charset-normalizer by itself, you can also pass
:all: as the specifier to
pip install charset-normalizer --no-binary :all: