Skip to content

pip download does not clean up new resolver's backtracking artifacts #8827

Closed
@McSinyx

Description

@McSinyx

Environment

  • pip version: 0b18e21
  • Python version: 3.8.5
  • OS: Debian testing

Description

IIUC pip download is supposed to prepare a directory with distributions to be installed from the resolved requirements. However, due to implementation details, distributions are saved to the target directory as they are downloaded/prepared for dependency resolution:

if download_dir:
if link.is_existing_dir():
logger.info('Link is a directory, ignoring download_dir')
elif local_file:
download_location = os.path.join(
download_dir, link.filename
)
if not os.path.exists(download_location):
shutil.copy(local_file.path, download_location)
download_path = display_path(download_location)
logger.info('Saved %s', download_path)

Expected behavior

The destination directory should only be left with distributions necessary distribution for installation. This way, when pip install is called on this directory, no resolution would be needed.

How to Reproduce

$ pip ---use-feature=2020-resolver download oslo-utils==1.4.0
Collecting oslo-utils==1.4.0
  Downloading oslo.utils-1.4.0-py2.py3-none-any.whl (55 kB)
     |████████████████████████████████| 55 kB 616 kB/s 
  Saved ./oslo.utils-1.4.0-py2.py3-none-any.whl
Collecting iso8601>=0.1.9
  Using cached iso8601-0.1.12-py3-none-any.whl (12 kB)
  Saved ./iso8601-0.1.12-py3-none-any.whl
Collecting netifaces>=0.10.4
  Using cached netifaces-0.10.9.tar.gz (28 kB)
  Saved ./netifaces-0.10.9.tar.gz
Collecting six>=1.9.0
  Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
  Saved ./six-1.15.0-py2.py3-none-any.whl
Collecting netaddr>=0.7.12
  Using cached netaddr-0.8.0-py2.py3-none-any.whl (1.9 MB)
  Saved ./netaddr-0.8.0-py2.py3-none-any.whl
Collecting pbr!=0.7,<1.0,>=0.6
  Downloading pbr-0.11.1-py2.py3-none-any.whl (79 kB)
     |████████████████████████████████| 79 kB 609 kB/s 
  Saved ./pbr-0.11.1-py2.py3-none-any.whl
Collecting Babel>=1.3
  Using cached Babel-2.8.0-py2.py3-none-any.whl (8.6 MB)
  Saved ./Babel-2.8.0-py2.py3-none-any.whl
Collecting pytz>=2015.7
  Using cached pytz-2020.1-py2.py3-none-any.whl (510 kB)
  Saved ./pytz-2020.1-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-5.0.0-py3-none-any.whl (46 kB)
  Saved ./oslo.i18n-5.0.0-py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-4.0.1-py3-none-any.whl (47 kB)
  Saved ./oslo.i18n-4.0.1-py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-4.0.0-py3-none-any.whl (47 kB)
  Saved ./oslo.i18n-4.0.0-py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.25.1-py2.py3-none-any.whl (47 kB)
  Saved ./oslo.i18n-3.25.1-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.25.0-py2.py3-none-any.whl (47 kB)
  Saved ./oslo.i18n-3.25.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.24.0-py2.py3-none-any.whl (46 kB)
  Saved ./oslo.i18n-3.24.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.23.1-py2.py3-none-any.whl (46 kB)
  Saved ./oslo.i18n-3.23.1-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.23.0-py2.py3-none-any.whl (46 kB)
  Saved ./oslo.i18n-3.23.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.22.1-py2.py3-none-any.whl (40 kB)
  Saved ./oslo.i18n-3.22.1-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.22.0-py2.py3-none-any.whl (40 kB)
  Saved ./oslo.i18n-3.22.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.21.0-py2.py3-none-any.whl (40 kB)
  Saved ./oslo.i18n-3.21.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.20.0-py2.py3-none-any.whl (42 kB)
  Saved ./oslo.i18n-3.20.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.19.0-py2.py3-none-any.whl (42 kB)
  Saved ./oslo.i18n-3.19.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.18.0-py2.py3-none-any.whl (42 kB)
  Saved ./oslo.i18n-3.18.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.17.2-py2.py3-none-any.whl (45 kB)
  Saved ./oslo.i18n-3.17.2-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.17.1-py2.py3-none-any.whl (42 kB)
  Saved ./oslo.i18n-3.17.1-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.17.0-py2.py3-none-any.whl (42 kB)
  Saved ./oslo.i18n-3.17.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.16.0-py2.py3-none-any.whl (42 kB)
  Saved ./oslo.i18n-3.16.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.15.3-py2.py3-none-any.whl (42 kB)
  Saved ./oslo.i18n-3.15.3-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.15.2-py2.py3-none-any.whl (42 kB)
  Saved ./oslo.i18n-3.15.2-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.15.1-py2.py3-none-any.whl (42 kB)
  Saved ./oslo.i18n-3.15.1-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.15.0-py2.py3-none-any.whl (42 kB)
  Saved ./oslo.i18n-3.15.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.14.0-py2.py3-none-any.whl (42 kB)
  Saved ./oslo.i18n-3.14.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.13.0-py2.py3-none-any.whl (41 kB)
  Saved ./oslo.i18n-3.13.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Using cached oslo.i18n-3.12.0-py2.py3-none-any.whl (41 kB)
  Saved ./oslo.i18n-3.12.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-3.11.0-py2.py3-none-any.whl (41 kB)
     |████████████████████████████████| 41 kB 495 kB/s 
  Saved ./oslo.i18n-3.11.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-3.10.0-py2.py3-none-any.whl (41 kB)
     |████████████████████████████████| 41 kB 988 kB/s 
  Saved ./oslo.i18n-3.10.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-3.9.0-py2.py3-none-any.whl (41 kB)
     |████████████████████████████████| 41 kB 981 kB/s 
  Saved ./oslo.i18n-3.9.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-3.8.0-py2.py3-none-any.whl (41 kB)
     |████████████████████████████████| 41 kB 931 kB/s 
  Saved ./oslo.i18n-3.8.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-3.7.0-py2.py3-none-any.whl (41 kB)
     |████████████████████████████████| 41 kB 962 kB/s 
  Saved ./oslo.i18n-3.7.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-3.6.0-py2.py3-none-any.whl (42 kB)
     |████████████████████████████████| 42 kB 1.4 MB/s 
  Saved ./oslo.i18n-3.6.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-3.5.0-py2.py3-none-any.whl (42 kB)
     |████████████████████████████████| 42 kB 944 kB/s 
  Saved ./oslo.i18n-3.5.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-3.4.0-py2.py3-none-any.whl (42 kB)
     |████████████████████████████████| 42 kB 1.5 MB/s 
  Saved ./oslo.i18n-3.4.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-3.3.0-py2.py3-none-any.whl (41 kB)
     |████████████████████████████████| 41 kB 784 kB/s 
  Saved ./oslo.i18n-3.3.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-3.2.0-py2.py3-none-any.whl (34 kB)
  Saved ./oslo.i18n-3.2.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-3.1.0-py2.py3-none-any.whl (34 kB)
  Saved ./oslo.i18n-3.1.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-3.0.0-py2.py3-none-any.whl (34 kB)
  Saved ./oslo.i18n-3.0.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-2.7.0-py2.py3-none-any.whl (34 kB)
  Saved ./oslo.i18n-2.7.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-2.6.0-py2.py3-none-any.whl (33 kB)
  Saved ./oslo.i18n-2.6.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-2.5.0-py2.py3-none-any.whl (33 kB)
  Saved ./oslo.i18n-2.5.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-2.4.0-py2.py3-none-any.whl (33 kB)
  Saved ./oslo.i18n-2.4.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-2.3.0-py2.py3-none-any.whl (32 kB)
  Saved ./oslo.i18n-2.3.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-2.2.0-py2.py3-none-any.whl (32 kB)
  Saved ./oslo.i18n-2.2.0-py2.py3-none-any.whl
Collecting oslo.i18n>=1.3.0
  Downloading oslo.i18n-2.1.0-py2.py3-none-any.whl (32 kB)
  Saved ./oslo.i18n-2.1.0-py2.py3-none-any.whl
Collecting pip
  Using cached pip-20.2.2-py2.py3-none-any.whl (1.5 MB)
  Saved ./pip-20.2.2-py2.py3-none-any.whl
Successfully downloaded oslo-utils iso8601 netifaces six netaddr pbr Babel pytz oslo.i18n pip
$ ls
Babel-2.8.0-py2.py3-none-any.whl       oslo.i18n-3.19.0-py2.py3-none-any.whl
iso8601-0.1.12-py3-none-any.whl        oslo.i18n-3.20.0-py2.py3-none-any.whl
netaddr-0.8.0-py2.py3-none-any.whl     oslo.i18n-3.2.0-py2.py3-none-any.whl
netifaces-0.10.9.tar.gz                oslo.i18n-3.21.0-py2.py3-none-any.whl
oslo.i18n-2.1.0-py2.py3-none-any.whl   oslo.i18n-3.22.0-py2.py3-none-any.whl
oslo.i18n-2.2.0-py2.py3-none-any.whl   oslo.i18n-3.22.1-py2.py3-none-any.whl
oslo.i18n-2.3.0-py2.py3-none-any.whl   oslo.i18n-3.23.0-py2.py3-none-any.whl
oslo.i18n-2.4.0-py2.py3-none-any.whl   oslo.i18n-3.23.1-py2.py3-none-any.whl
oslo.i18n-2.5.0-py2.py3-none-any.whl   oslo.i18n-3.24.0-py2.py3-none-any.whl
oslo.i18n-2.6.0-py2.py3-none-any.whl   oslo.i18n-3.25.0-py2.py3-none-any.whl
oslo.i18n-2.7.0-py2.py3-none-any.whl   oslo.i18n-3.25.1-py2.py3-none-any.whl
oslo.i18n-3.0.0-py2.py3-none-any.whl   oslo.i18n-3.3.0-py2.py3-none-any.whl
oslo.i18n-3.10.0-py2.py3-none-any.whl  oslo.i18n-3.4.0-py2.py3-none-any.whl
oslo.i18n-3.1.0-py2.py3-none-any.whl   oslo.i18n-3.5.0-py2.py3-none-any.whl
oslo.i18n-3.11.0-py2.py3-none-any.whl  oslo.i18n-3.6.0-py2.py3-none-any.whl
oslo.i18n-3.12.0-py2.py3-none-any.whl  oslo.i18n-3.7.0-py2.py3-none-any.whl
oslo.i18n-3.13.0-py2.py3-none-any.whl  oslo.i18n-3.8.0-py2.py3-none-any.whl
oslo.i18n-3.14.0-py2.py3-none-any.whl  oslo.i18n-3.9.0-py2.py3-none-any.whl
oslo.i18n-3.15.0-py2.py3-none-any.whl  oslo.i18n-4.0.0-py3-none-any.whl
oslo.i18n-3.15.1-py2.py3-none-any.whl  oslo.i18n-4.0.1-py3-none-any.whl
oslo.i18n-3.15.2-py2.py3-none-any.whl  oslo.i18n-5.0.0-py3-none-any.whl
oslo.i18n-3.15.3-py2.py3-none-any.whl  oslo.utils-1.4.0-py2.py3-none-any.whl
oslo.i18n-3.16.0-py2.py3-none-any.whl  pbr-0.11.1-py2.py3-none-any.whl
oslo.i18n-3.17.0-py2.py3-none-any.whl  pip-20.2.2-py2.py3-none-any.whl
oslo.i18n-3.17.1-py2.py3-none-any.whl  pytz-2020.1-py2.py3-none-any.whl
oslo.i18n-3.17.2-py2.py3-none-any.whl  six-1.15.0-py2.py3-none-any.whl
oslo.i18n-3.18.0-py2.py3-none-any.whl

Metadata

Metadata

Assignees

No one assigned

    Labels

    C: downloadAbout fetching data from PyPI and other sourcestype: bugA confirmed bug or unintended behavior

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions