"WARNING: Value for scheme.data does not match" when I try to update pip or install packages

PythonPython 3.xPip

Python Problem Overview


I have a M1 Mac and I just noticed that when I try to upgrade pip or install any packages I get a series of warnings:

user@mac01 ~ $python3 -m pip install --upgrade pip
WARNING: Value for scheme.platlib does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /opt/homebrew/lib/python3.9/site-packages
sysconfig: /opt/homebrew/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages
WARNING: Value for scheme.purelib does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /opt/homebrew/lib/python3.9/site-packages
sysconfig: /opt/homebrew/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /opt/homebrew/include/python3.9/UNKNOWN
sysconfig: /opt/homebrew/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/include/python3.9
WARNING: Value for scheme.scripts does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /opt/homebrew/bin
sysconfig: /opt/homebrew/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/bin
WARNING: Value for scheme.data does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /opt/homebrew
sysconfig: /opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.9
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
Requirement already satisfied: pip in /opt/homebrew/lib/python3.9/site-packages (21.1)
WARNING: Value for scheme.platlib does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /opt/homebrew/lib/python3.9/site-packages
sysconfig: /opt/homebrew/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages
WARNING: Value for scheme.purelib does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /opt/homebrew/lib/python3.9/site-packages
sysconfig: /opt/homebrew/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /opt/homebrew/include/python3.9/UNKNOWN
sysconfig: /opt/homebrew/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/include/python3.9
WARNING: Value for scheme.scripts does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /opt/homebrew/bin
sysconfig: /opt/homebrew/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/bin
WARNING: Value for scheme.data does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /opt/homebrew
sysconfig: /opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.9
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
user@mac01 ~ $

Please advise.

Python Solutions


Solution 1 - Python

(A pip maintainer here!)

This warning is not harmful per-se, and doesn't affect any installation logic. You can safely use the current pip, ignoring this warning for now.

For those who want a quick answer to silencing this warning: python -m pip install pip=={some-older-version} -- you can pin to an older version of pip for now. It's unnecessary IMO, but you can pick your poison (some warnings to ignore vs older pip version).


For those who want to understand more: This warning was added because we wanted to surface issues that might take place, when we make a transition in the future.

For historical reasons (uhm... Python 2), pip has used distutils.sysconfig to get information about where to install your Python packages. That module can be functionally replaced by sysconfig that was added to the Python standard library in Python 3.2. However, Python distributors patch it (and not sysconfig) to provide an alternative “default install scheme”.

PEP 632 deprecates distutils, and it is going to be removed from the Python standard library. distutils-based installations is something that the Python packaging community has been trying to deprecate and remove for a while.

We've been working with a lot of distributors to get them to fix their patches, so that installations in the future can transition to using sysconfig as their source of truth. This message is a part of our "get information from users of broken Python installations". As you've probably noticed, Python installations with differently configured distutils.sysconfig and sysconfig are exceedingly more common than we'd expected. :)

Update: Newer versions of pip (>21.1.1) should present these messages much less often. If you're still seeing these messages, please look at the issue that the message contains.

Solution 2 - Python

downgrading to an earlier version of pip fixed it for me:

python -m pip install pip==21.0.1

Solution 3 - Python

For those who failed to run python -m pip install pip==21.0.1 (for example returned the same error message like ValueError: check_hostname requires server_hostname), you can try to disable the system proxy and retry the command (If you were using some proxy like shadowsocks, v2ray, etc).

Solution 4 - Python

Have you tried running it from a virtual environment?

python3 -m venv venv
source ./venv/bin/activate
pip install --upgrade pip

Solution 5 - Python

Interestingly, pip even complains about itself:

C:\python>python -m pip install --upgrade --force-reinstall pip
Collecting pip
  Using cached pip-21.1-py3-none-any.whl (1.5 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 21.1
    Uninstalling pip-21.1:
      Successfully uninstalled pip-21.1
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: C:\python\Include\UNKNOWN
sysconfig: C:\python\Include
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
Successfully installed pip-21.1

You can suppress pedantic warnings by using pip install foo 2>nul on Windows, or pip install foo 2>/dev/null on Linux. However, be warned: this will also suppress important errors

Solution 6 - Python

IF you, by any chance made any changes to your anaconda (reinstall, update, remove), then the problem may be from which python your pip is trying to use.

If you take a look at the pip (/usr/local/bin/pip3), the shebang may be pointing to a different python file path.

I had the same problem, and I solved it by changing the python reference in the pip3 file.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondaquezadaView Question on Stackoverflow
Solution 1 - PythonpradyunsgView Answer on Stackoverflow
Solution 2 - PythonEmilMachineView Answer on Stackoverflow
Solution 3 - PythonlaoybView Answer on Stackoverflow
Solution 4 - PythonBicameral MindView Answer on Stackoverflow
Solution 5 - PythonRexBarkerView Answer on Stackoverflow
Solution 6 - PythonJ LeeView Answer on Stackoverflow