Почему я не жалуюсь, когда я меняю га sh? - PullRequest
2 голосов
/ 19 февраля 2020

Для чего используются хэши в Pipfile.lock?

Что я делаю

  1. Я создаю Pipfile + Pipfile.lock с pipenv
  2. Я копирую их в новое место
  3. Я изменяю хэши (например, заменяя первый символ на "a")
  4. Я выполняю pipenv sync

Теперь я ожидается, что pipenv сообщит мне, что не может установить зависимости, указанные в Pipfile.lock. Что хэши не совпадают. Но все заканчивается, как будто все в порядке.

Я использую pipenv, version 2018.11.26

Pipfile

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
click = "*"

[requires]
python_version = "3.8"

Pipfile.lock

{
    "_meta": {
        "hash": {
            "sha256": "4a7fd38a2059440221d12f94b1f164253e097393bdaa26ee99895d043625bcb8"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.8"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "click": {
            "hashes": [
                "sha256:2335065e6395b9e67ca716de5f7526736bfa6ceead690adf616d925bdc622b13",
                "sha256:5b94b49521f6456670fdb30cd82a4eca9412788a93fa6dd6df72c94d5a8ff2d7"
            ],
            "index": "pypi",
            "version": "==7.0"
        }
    },
    "develop": {}
}

1 Ответ

2 голосов
/ 28 февраля 2020

Мне также удалось воссоздать это поведение, поэтому я немного покопался с командой pipenv sync -v для некоторой детализации и обнаружил следующее:

Since it is already installed, we are trusting this package without checking its hash. 
To ensure a completely repeatable environment, install into an empty virtualenv.

Похоже, что хэши не проверяются, если пакет уже установлен.

...