Error Knowledge Base PIP HASH_MISMATCH

ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE.

You are using hash-checking mode (`--require-hashes`), but the downloaded file's hash doesn't match, or some requirements are missing hashes.

What This Error Means

You are using hash-checking mode (--require-hashes), but the downloaded file's hash doesn't match, or some requirements are missing hashes.

How to Fix It

If you intentionally changed versions, regenerate hashes for the new artifacts from a trusted source and update the requirements file.

Ensure every requirement installed under --require-hashes has at least one valid hash entry (pip requires hashes for all requirements in this mode).

Retry with --no-cache-dir to rule out corrupted cache artifacts.

If you're using an internal mirror, verify it serves the correct artifacts and isn't rewriting files.

Why It Happens

A package version was updated in the requirements file but its hashes were not updated.

The index/mirror served a different file than the one the hashes were generated against.

A cached download is corrupt or truncated (less common, but possible).

An attacker or misconfigured proxy/mirror altered the served artifact.

How to Verify

Re-run python -m pip install --require-hashes -r requirements.txt and confirm installs complete.

Verify the installed versions match what you pinned (python -m pip freeze).

Manual hash-checking triage

Identify which requirement line pip says has mismatched/missing hashes.

Check whether you changed a pinned version without updating its --hash= lines.

Confirm you're using the expected index/mirror (a different mirror can serve different files).

Examples

ERROR: THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes.
Hashes are required in --require-hashes mode (implicitly on when a hash is specified for any package). These requirements were missing hashes, leaving them open to tampering.

How pip hash-checking works

In --require-hashes mode, pip verifies that every downloaded distribution matches an allowed hash from your requirements file.

If any package is missing a hash entry, pip refuses to install it (because it would be unverified).

If a downloaded artifact's hash differs, pip assumes tampering or a changed file and aborts.

Prevention Tips

Generate hashed requirements in a controlled environment and treat the file as an integrity lock.

Use a single trusted mirror for CI to reduce artifact variance.

Avoid manually editing hash lines, use tooling/workflows to regenerate them.

Where This Can Be Triggered

github.com/pypa/pip/blob/25.3/src/pip/_internal/exceptions.py (missing hashes)

When --require-hashes is enabled and a requirement is missing hashes, pip reports a HashMissing error with this header text. - GitHub

class HashMissing(HashError):
    """A hash was needed for a requirement but is absent."""

    order = 2
    head = (
        "Hashes are required in --require-hashes mode, but they are "
        "missing from some requirements. Here is a list of those "
        "requirements along with the hashes their downloaded archives "
        "actually had. Add lines like these to your requirements files to "
        "prevent tampering. (If you did not enable --require-hashes "
        "manually, note that it turns on automatically when any package "
        "has a hash.)"
    )

github.com/pypa/pip/blob/25.3/src/pip/_internal/exceptions.py (hash mismatch)

When the downloaded artifact hash doesn't match an allowed hash, pip reports a HashMismatch error with this header text. - GitHub

class HashMismatch(HashError):
    """
    Distribution file hash values don't match.

    :ivar package_name: The name of the package that triggered the hash
        mismatch. Feel free to write to this after the exception is raise to
        improve its error message.

    """

    order = 4
    head = (
        "THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS "
        "FILE. If you have updated the package versions, please update "
        "the hashes. Otherwise, examine the package contents carefully; "
        "someone may have tampered with them."
    )

Need help or found a mistake? Contact RepoFlow support for questions.

Join our mailing list