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.5andpip 21.0.1.