Please provide support for non-setuptools.extern bundled packages
mgorny opened this issue · 2 comments
mgorny commented
Describe the bug
The package currently uses packaging
, importlib_metadata
and tomli
bundled with setuptools via setuptools.extern
package. Setuptools is unbundled on Gentoo, therefore setuptools.extern
is not provided and cx_Freeze fails due to missing imports, e.g.:
____________________________________________ ERROR collecting tests/test_winversioninfo.py ____________________________________________
ImportError while importing test module '/tmp/cx_Freeze/tests/test_winversioninfo.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/lib/python3.11/importlib/__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
tests/test_winversioninfo.py:5: in <module>
from cx_Freeze.winversioninfo import Version, VersionInfo
cx_Freeze/winversioninfo.py:12: in <module>
from setuptools.extern.packaging import version as packaging_version
E ModuleNotFoundError: No module named 'setuptools.extern'
Could you please add support for falling back to the top-level packaging
, tomli
and importlib_metadata
, please?
To Reproduce
git clone https://github.com/marcelotduarte/cx_Freeze
cd cx_Freeze
python -m venv .venv
. .venv/bin/activate
pip install -r requirements-dev.txt
# this is equivalent to Gentoo's unvendoring
pip install jaraco.text more-itertools nspektr ordered-set packaging platformdirs tomli importlib_metadata
rm -r .venv/lib/python3.*/site-packages/setuptools/{extern,_vendor}
find .venv/lib/python3.*/site-packages/setuptools/ -name '*.py' -exec sed -e 's:from \w*[.]\+extern ::' -e 's:\w*[.]\+extern[.]::' -i {} +
python -m pytest
Expected behavior
Tests passing ;-).
Desktop (please complete the following information):
- Platform information (e.g. Ubuntu Linux 22.04): Gentoo Linux
- OS architecture (e.g. amd64): amd64
- cx_Freeze version [e.g. 6.11]: 6.14.8, 2642a25
- Python version [e.g. 3.10]: 3.11.2
marcelotduarte commented
Of course.
Very good "To Reproduce".
marcelotduarte commented