Skip to content

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

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

    OS-androidstdlibStandard 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