Skip to content

pip install does not work in Python 3.13 on 32-bit ARM Android running on 64-bit ARM kernel #145616

@robertkirkman

Description

@robertkirkman

Bug report

Bug description:

Unfortunately, this line of code does not work on 32-bit ARM Python 3.13 when it is running on an Android device that has a 32-bit ARM /system folder but a 64-bit ARM kernel.

"armv7l": "armeabi_v7a",

On 32-bit ARM Python 3.13 when it is running on an Android device that has a 32-bit ARM /system folder but a 64-bit ARM kernel, this command (and any other pip command):

pip install packaging

unfortunately results in this error:

ERROR: Exception:
Traceback (most recent call last):
  File "/data/data/com.termux/files/usr/lib/python3.13/site-packages/pip/_internal/cli/base_command.py", line 107, in _run_wrapper
    status = _inner_run()
  File "/data/data/com.termux/files/usr/lib/python3.13/site-packages/pip/_internal/cli/base_command.py", line 98, in _inner_run
    return self.run(options, args)
           ~~~~~~~~^^^^^^^^^^^^^^^
  File "/data/data/com.termux/files/usr/lib/python3.13/site-packages/pip/_internal/cli/req_command.py", line 96, in wrapper
    return func(self, options, args)
  File "/data/data/com.termux/files/usr/lib/python3.13/site-packages/pip/_internal/commands/install.py", line 391, in run
    resolver = self.make_resolver(
        preparer=preparer,
    ...<8 lines>...
        py_version_info=options.python_version,
    )
  File "/data/data/com.termux/files/usr/lib/python3.13/site-packages/pip/_internal/cli/req_command.py", line 256, in make_resolver
    return pip._internal.resolution.resolvelib.resolver.Resolver(
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        preparer=preparer,
        ^^^^^^^^^^^^^^^^^^
    ...<9 lines>...
        py_version_info=py_version_info,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/data/data/com.termux/files/usr/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 61, in __init__
    self.factory = Factory(
                   ~~~~~~~^
        finder=finder,
        ^^^^^^^^^^^^^^
    ...<7 lines>...
        py_version_info=py_version_info,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/data/data/com.termux/files/usr/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 118, in __init__
    self._supported_tags_cache = get_supported()
                                 ~~~~~~~~~~~~~^^
  File "/data/data/com.termux/files/usr/lib/python3.13/site-packages/pip/_internal/utils/compatibility_tags.py", line 178, in get_supported
    supported.extend(
    ~~~~~~~~~~~~~~~~^
        cpython_tags(
        ^^^^^^^^^^^^^
    ...<3 lines>...
        )
        ^
    )
    ^
  File "/data/data/com.termux/files/usr/lib/python3.13/site-packages/pip/_vendor/packaging/tags.py", line 229, in cpython_tags
    platforms = list(platforms or platform_tags())
  File "/data/data/com.termux/files/usr/lib/python3.13/site-packages/pip/_vendor/packaging/tags.py", line 558, in android_platforms
    abi = sysconfig.get_platform().split("-")[-1]
          ~~~~~~~~~~~~~~~~~~~~~~^^
  File "/data/data/com.termux/files/usr/lib/python3.13/sysconfig/__init__.py", line 647, in get_platform
    machine = {
              ~
    ...<3 lines>...
        "armv7l": "armeabi_v7a",
        ~~~~~~~~~~~~~~~~~~~~~~~~
    }[machine]
    ~^^^^^^^^^
KeyError: 'armv8l'

Note

Manually editing sysconfig/__init__.py to look like this:

machine = {
  "x86_64": "x86_64",
  "i686": "x86",
  "aarch64": "arm64_v8a",
  "armv7l": "armeabi_v7a",
  "armv8l": "armeabi_v7a",
}[machine]

does allow pip install to work successfully on 32-bit ARM Android running on a 64-bit ARM kernel without any further unique changes additionally being required

CPython versions tested on:

3.13

Operating systems tested on:

Android

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytopic-sysconfigtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions