pip rejects binaries when installing using requirements.txt

Viewed 287

Why does Python pip reject binaries when installing package from requirements.txt?
I am not using --no-binary, and I could not find any mention that this could be the default. It definitely is not when installing without requirements.txt.

When I install django-silk package in this way, it succeeds:

pip install -v django-silk==4.1.0

But when django-silk==4.1.0 is in my requirements.txt, and I run this exact command line:

pip install -v -r requirements-prod.txt

I get the following log:

(...)
  Skipping link: No binaries permitted for django-silk: (...)
  Found link (...) version: 3.0.4
  Skipping link: No binaries permitted for django-silk: (...)
  Found link  (...) version: 4.0.0
  Skipping link: No binaries permitted for django-silk: https://files.pythonhosted.org/(...)/django_silk-4.0.0-py2.py3-none-any.whl (...)
  Skipping link: No binaries permitted for django-silk: https://files.pythonhosted.org/(...)/django_silk-4.0.1-py2.py3-none-any.whl (...)
  Skipping link: No binaries permitted for django-silk: https://files.pythonhosted.org/(...)/django_silk-4.1.0-py2.py3-none-any.whl (...)
Given no hashes to check 0 links for project 'django-silk': discarding no candidates
(...)
pip._internal.exceptions.DistributionNotFound: No matching distribution found for django-silk==4.1.0

Why does pip decide that No binaries permitted for django-silk?

Update: It seems that the issue is not with requirements.txt file itself, but in the fact that requirements.txt also contains another package:

PyYAML --global-option="--with-libyaml" ; sys_platform != 'win32'
django-silk==4.1.0

So apparently the fact that PyYAML must be installed from source makes pip ignore binary packages for django-silk as well. Why does that happen?

Note: I am using Python 3.7.5 and pip 21.0.1.

1 Answers
Related