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

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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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.


(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.


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

python -m pip install pip==21.0.1


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).


Have you tried running it from a virtual environment?

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