The binary wheels published on PyPI starting with lxml 4.9.3 have a wrong hardcoded default path for the XML catalog file. This causes XML schema discovery to fail unless the XML catalog is specified manually using the `XML_CATALOG_FILES` environment variable. The hardcoded path is compiled as part of the statically linked libxml2, and it defaults to `%{sysconfdir}/xml/catalog`. In newer wheels this points to a temporary build directory instead of `/etc/xml/catalog`.
This can be checked by downloading a whl file from [PyPI](https://pypi.org/project/lxml/#files) and extracting the `etree` dynamic library and looking up the string:
The binary wheels published on PyPI starting with lxml 4.9.3 have a wrong hardcoded default path for the XML catalog file. This causes XML schema discovery to fail unless the XML catalog is specified manually using the `XML_CATALOG_FILES` environment variable. The hardcoded path is compiled as part of the statically linked libxml2, and it defaults to `%{sysconfdir} /xml/catalog` . In newer wheels this points to a temporary build directory instead of `/etc/xml/catalog`.
This can be checked by downloading a whl file from [PyPI](https:/ /pypi.org/ project/ lxml/#files) and extracting the `etree` dynamic library and looking up the string:
``` 9.3-pp310- pypy310_ pp73-manylinux_ 2_28_x86_ 64.whl pp73-x86_ 64-linux- gnu.so | grep "/xml/catalog" /tmp/pip- req-build- svyupjhx/ build/tmp/ libxml2/ etc/xml/ catalog
# From lxml-4.
❯ strings etree.pypy310-
file://
# From lxml-4. 9.2-pp39- pypy39_ pp73-manylinux_ 2_17_x86_ 64.manylinux201 4_x86_64. manylinux_ 2_24_x86_ 64.whl pp73-x86_ 64-linux- gnu.so | grep "/xml/catalog" /etc/xml/ catalog
❯ strings etree.pypy39-
file://
```
Possibly a result of CI changes?