Priority: 4 - Normal
Affects Version/s: None
Fix Version/s: None
Many newer versions of python packages only support python 3.5 or higher. PyPi on the internet implements the PEP508 standard to let pip know not to use these newer versions, however the artifactory does not.
Example jupyter-console version 6 is only compatible with py>= 3.5. On pypi, there is a tag on the html link as 'data-requires-python=">=3.5"". This does not appear on artifactory. The consequence is that it is difficult to install jupyter notebook and other packages on python 2.7.
‘pip install jupyter’
Example from https://pypi.org/simple/jupyter-console/
Pip will download this page and see that the link for version 6.0.0;
- <a href="<removed>" data-requires-python=">=3.5">jupyter_console-6.0.0.tar.gz</a>
Has a field called ‘data-requires-python=”>=3.5”’
Pip for python 2.7 will then know to exclude this package when determining which version to download from the page.
Version 5.2.0 does not have the tag, and so is selected and installed by pip;
- <a href="<removed> ">jupyter_console-5.2.0.tar.gz</a>
Example from Artifactory mirror
- <a href="<removed>" rel=”internal">jupyter_console-6.0.0.tar.gz</a>
As you can see, the ‘data-requires-python=”>=3.5”’ field is not present. Pip will then assume that I want the latest version of the package (6.0.0), download it and check the version of python required. This then fails, as pip sees we have an invalid python version. However, pip will not download or check any other versions of the package to see if they work.
Need a mechanism to retry the download if the python version is not met after initial download