That in turn seems, according to html5-parser documentation (not yet taken the time to confirm this myself), to cause *both* lxml and html5-parser to dynamically link libxml2 so that they can share the same C-level data structures.
Effectively, html5-parser seems to rely on internal implementation details of lxml in ways that completely break Python packaging. I get it gives a performance advantage, but at a steep cost.