Python DEPRECATION warning and pip --no-cache-dir breakage
Today, Python 2.7’s pip started echoing the following:
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.Simultaneously (and perhaps related, though perhaps coincidentally) Python 2.7’s pip started giving the following error:
File in "...\lib\site-packages\pip\_internal\cli\base_command.py", line 176, in main
status = self.run(options, args)
File in "...\lib\site-packages\pip\_internal\commands\install.py", line 346, in run
session=session, autobuilding=True
File in "...\lib\site-packages\pip\_internal\wheel.py", line 848, in build
assert building_is_possible
AssertionErrorLooking at the wheel.py source, there is a TODO above the the assert building_is_possible line:
# TODO: This check fails if --no-cache-dir is set. And yet we
# might be able to build into the ephemeral cache, surely?
building_is_possible = self._wheel_dir or (
autobuilding and self.wheel_cache.cache_dir
)
assert building_is_possibleSure enough, we are using the --no-cache-dir option when we call pip.
Removing the call to --no-cache-dir fixes the AssertionError, however we still need pip to not use cached packages.
As a workaround, we can empty the entire pip cache.
The pip cache has a different location depending upon the OS.
- Windows:
%LOCALAPPDATA%\pip\Cache - Linux:
~/.cache/pip
DEL /f /s /q %LOCALAPPDATA%\pip\Cache
RMDIR /s /q %LOCALAPPDATA%\pip\Cache(We call DEL and RMDIR because otherwise we get “The directory is not empty”.)
rm -rf ~/.cache/pipIt is unclear whether the DEPRECATION message and the AssertionError from --no-cache-dir are related, but in this case neither pip nor Python 2.7 were upgraded – these both seemingly started on their own accord.