Skip to content

Conversation

@chrisburr
Copy link
Contributor

@chrisburr chrisburr commented Aug 22, 2025

This PR addresses several compatibility issues that arise when using crossenv with Python 3.14+, fixing import loops and deprecation warnings.

Make tracebacks involving _patch_module more readable by including file path

  • Improves debugging experience by showing actual file paths in tracebacks

Use posix.uname_result rather than making a named tuple

  • Fixes import loop in Python 3.14 caused by crossenv's patching conflicting with collections.namedtuple import
Python 3.14 traceback (click to expand)
Fatal Python error: init_import_site: Failed to import the site module
Python runtime state: initialized
Traceback (most recent call last):
  File "/.../build_env/venv/lib/site.py", line 177, in <module>
  File "/.../build_env/venv/lib/site.py", line 122, in __init__
  File "/.../build_env/venv/lib/site.py", line 170, in manually_patch_loaded
  File "/.../build_env/venv/lib/site.py", line 56, in _patch_module
  File "/.../build_env/venv/lib/os-patch.py", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1333, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1267, in _find_spec
  File "/.../build_env/venv/lib/importlib-machinery-patch.py", line 18, in _PathFinder_find_spec
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 507, in get_path
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 497, in get_paths
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 276, in _expand_vars
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 625, in get_config_vars
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 525, in _init_config_vars
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 393, in _init_posix
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 373, in _get_sysconfigdata
  File "/.../build_env/lib/python3.14/importlib/__init__.py", line 88, in import_module
  File "<frozen importlib._bootstrap>", line 1398, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1333, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1267, in _find_spec
  File "/.../build_env/venv/lib/importlib-machinery-patch.py", line 18, in _PathFinder_find_spec
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 507, in get_path
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 497, in get_paths
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 286, in _expand_vars
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 262, in _subst_vars
AttributeError: 'installed_base'

Don't pass any argument to is_python_build due to deprecation since Python 3.12

  • The argument was deprecated in Python 3.12 and will be removed in Python 3.15
  • Fixes another import loop in Python 3.14 (this time with warnings)
Python 3.14 traceback (click to expand)
Fatal Python error: init_import_site: Failed to import the site module
Python runtime state: initialized
Traceback (most recent call last):
  File "/.../build_env/venv/lib/site.py", line 177, in <module>
  File "/.../build_env/venv/lib/site.py", line 122, in __init__
  File "/.../build_env/venv/lib/site.py", line 170, in manually_patch_loaded
  File "/.../build_env/venv/lib/site.py", line 56, in _patch_module
  File "/.../build_env/venv/lib/sysconfig-patch.py", line 5, in <module>
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 225, in is_python_build
  File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1333, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1267, in _find_spec
  File "/.../build_env/venv/lib/importlib-machinery-patch.py", line 18, in _PathFinder_find_spec
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 507, in get_path
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 497, in get_paths
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 276, in _expand_vars
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 625, in get_config_vars
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 525, in _init_config_vars
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 393, in _init_posix
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 373, in _get_sysconfigdata
  File "/.../build_env/lib/python3.14/importlib/__init__.py", line 88, in import_module
  File "<frozen importlib._bootstrap>", line 1398, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1333, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1267, in _find_spec
  File "/.../build_env/venv/lib/importlib-machinery-patch.py", line 18, in _PathFinder_find_spec
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 507, in get_path
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 497, in get_paths
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 286, in _expand_vars
  File "/.../build_env/lib/python3.14/sysconfig/__init__.py", line 262, in _subst_vars
AttributeError: 'installed_base'

chrisburr and others added 4 commits September 13, 2025 02:08
In Python 3.14 the combination of crossenv's patching and the import of collections.namedtuple results in a loop in the import machinery:

Fatal Python error: init_import_site: Failed to import the site module
Python runtime state: initialized
Traceback (most recent call last):
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/site.py", line 177, in <module>
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/site.py", line 122, in __init__
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/site.py", line 170, in manually_patch_loaded
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/site.py", line 56, in _patch_module
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/os-patch.py", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1333, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1267, in _find_spec
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/importlib-machinery-patch.py", line 18, in _PathFinder_find_spec
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 507, in get_path
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 497, in get_paths
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 276, in _expand_vars
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 625, in get_config_vars
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 525, in _init_config_vars
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 393, in _init_posix
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 373, in _get_sysconfigdata
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/importlib/__init__.py", line 88, in import_module
  File "<frozen importlib._bootstrap>", line 1398, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1333, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1267, in _find_spec
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/importlib-machinery-patch.py", line 18, in _PathFinder_find_spec
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 507, in get_path
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 497, in get_paths
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 286, in _expand_vars
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 262, in _subst_vars
AttributeError: 'installed_base'
…nce Python 3.12

See here for the deprecation: python/cpython@0675975#diff-d593bd299ba58e440ba411ffa0640ccd9d20d518b0cf2644ed4bdb75a82a3e70

The argument is removed in Python 3.15 and in Python 3.14 the import of warnings results in a loop in the import machinery (similar to 3e7f2e9):

Fatal Python error: init_import_site: Failed to import the site module
Python runtime state: initialized
Traceback (most recent call last):
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/site.py", line 177, in <module>
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/site.py", line 122, in __init__
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/site.py", line 170, in manually_patch_loaded
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/site.py", line 56, in _patch_module
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/sysconfig-patch.py", line 5, in <module>
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 225, in is_python_build
  File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1333, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1267, in _find_spec
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/importlib-machinery-patch.py", line 18, in _PathFinder_find_spec
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 507, in get_path
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 497, in get_paths
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 276, in _expand_vars
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 625, in get_config_vars
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 525, in _init_config_vars
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 393, in _init_posix
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 373, in _get_sysconfigdata
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/importlib/__init__.py", line 88, in import_module
  File "<frozen importlib._bootstrap>", line 1398, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1371, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1333, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 1267, in _find_spec
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/venv/lib/importlib-machinery-patch.py", line 18, in _PathFinder_find_spec
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 507, in get_path
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 497, in get_paths
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 286, in _expand_vars
  File "/home/cburr/Development/conda-forge/pycurl-feedstock/output/bld/rattler-build_pycurl_1755835374/build_env/lib/python3.14/sysconfig/__init__.py", line 262, in _subst_vars
AttributeError: 'installed_base'
@virtuald
Copy link
Member

Thanks for fixing this!

@virtuald virtuald merged commit d0dd625 into robotpy:main Sep 13, 2025
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants