Deterministische Builds#

Ihr müsst nur spezifizieren, was ihr wollt:

Mit pipenv install requests wird z.B. ein Pipfile erzeugt wie das folgende:

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

[packages]
requests = "*"

[dev-packages]

[requires]
python_version = "3.6"

Die zugehörige Pipfile.lock-Datei spezifiziert jedoch die Pakete exakt, z.B.:

{
    "default": {
        "requests": {
            "hashes": [
                "sha256:63b52e3c866428a224f97cab011de738c36aec0185aa91cfacd418b5d58911d1",
                "sha256:ec22d826a36ed72a7358ff3fe56cbd4ba69dd7a6718ffd450ff0e9df7a47ce6a"
            ],
            "index": "pypi",
            "version": "==2.19.1"
        },
        "urllib3": {
            "hashes": [
                "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf",
                "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5"
            ],
            "markers": "python_version != '3.2.*' and python_version != '3.1.*' and python_version < '4' and python_version != '3.3.*' and python_version >= '2.6' and python_version != '3.0.*'",
            "version": "==1.23"
        }
    },
    "develop": {}
}

Pipfile.lock spezifiziert auch alle Abhängigkeiten eures Projekts, wobei die Hashwerte der heruntergeladenen Dateien gespeichert werden. Dies soll wiederholbare und deterministische Builds gewährleisten.