Skip to content

pip install does not use wheel, probably mangled filenames #221

Open

Description

@smemsh

Wheels appear to be available, but it looks like the non-musl ones have mangled filenames:

 $ elinks -dump -no-numbering -no-references \
   https://pypi.org/simple/evdev-binary/ \
   | grep evdev_binary- \
   | awk '{print $1}' \
   | sort -V
evdev_binary-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
evdev_binary-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl
evdev_binary-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
evdev_binary-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl
evdev_binary-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
evdev_binary-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl
evdev_binary-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
evdev_binary-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl
evdev_binary-1.7.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
evdev_binary-1.7.1-cp311-cp311-musllinux_1_1_x86_64.whl
evdev_binary-1.7.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
evdev_binary-1.7.1-cp312-cp312-musllinux_1_1_x86_64.whl
evdev_binary-1.7.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
evdev_binary-1.7.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
evdev_binary-1.7.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
evdev_binary-1.7.1-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl

My pip would match, for example either variation that appears to be indicated above:

 $ pip3.12 debug -v | grep cp312-cp312-manylinux | grep -e _2_5_ -e _2_28_
  cp312-cp312-manylinux_2_28_x86_64
  cp312-cp312-manylinux_2_5_x86_64

yet it insists on doing a source build, and if forced claims there's nothing available:

 $ pip3 install --user --only-binary :all: evdev
ERROR: Could not find a version that satisfies the requirement evdev (from versions: none)
ERROR: No matching distribution found for evdev

Manual download and install works fine:

 $ curl -so evdev_binary-1.7.1-cp312-cp312-manylinux_2_28_x86_64.whl $(
       elinks -dump -no-numbering https://pypi.org/simple/evdev-binary/ \
       | grep 'https.*cp312-cp312.*many' \
       | awk '{print $NF}'
   )

 $ file -i *.whl
evdev_binary-1.7.1-cp312-cp312-manylinux_2_28_x86_64.whl: application/zip; charset=binary

 $ pip3 install --user *.whl
Processing ./evdev_binary-1.7.1-cp312-cp312-manylinux_2_28_x86_64.whl
Installing collected packages: evdev-binary
Successfully installed evdev-binary-1.7.1

Activity

  1. smemsh commented on Aug 7, 2024

    @smemsh
    Author

    Note, above workaround installs it as evdev-binary package, not evdev:

     $ pip3 list | grep evdev
    evdev-binary    1.7.1
    

    which means dependencies like evdev>=1.3 are not being satisfied by this installation.

  2. gvalkov commented on Feb 2, 2025

    @gvalkov
    Owner

    Hi. That is intentional. You need to install evdev or evdev-binary and there is indeed no way for evdev-binary to satisfy evdev as a pip requirement. Using optional dependencies (i.e. evdev[binary]) would have been nice, but it's not possible, since that "main" (i.e. evdev) dependency is also installed.

    I'll leave this open in case someone comes up with a good way to solve it.

  3. smemsh commented on Feb 2, 2025

    @smemsh
    Author

    Ok, I understand the workaround not working, but what about the mangled filenames? It would just install the wheel on its own without need of workaround if the filenames were correct, right?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions