Возможно ли получить побитовый детерминированный вывод из `pipenv sync` на той же машине в том же каталоге? - PullRequest
0 голосов
/ 03 ноября 2019

Рассмотрим следующие Pipfile и Pipfile.lock:

Pipfile

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

[dev-packages]
mysqlclient         = "==1.4.*"

[requires]
python_version      = "3.7"

[packages]
psutil = "*"

Pipfile.lock

{
    "_meta": {
        "hash": {
            "sha256": "8271317ad5eb8999a72772587039a102d979aa64958e2110044f70b3b0bf146a"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.7"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "psutil": {
            "hashes": [
                "sha256:028a1ec3c6197eadd11e7b46e8cc2f0720dc18ac6d7aabdb8e8c0d6c9704f000",
                "sha256:12542c3642909f4cd1928a2fba59e16fa27e47cbeea60928ebb62a8cbd1ce123",
                "sha256:503e4b20fa9d3342bcf58191bbc20a4a5ef79ca7df8972e6197cc14c5513e73d",
                "sha256:863a85c1c0a5103a12c05a35e59d336e1d665747e531256e061213e2e90f63f3",
                "sha256:954f782608bfef9ae9f78e660e065bd8ffcfaea780f9f2c8a133bb7cb9e826d7",
                "sha256:b6e08f965a305cd84c2d07409bc16fbef4417d67b70c53b299116c5b895e3f45",
                "sha256:bc96d437dfbb8865fc8828cf363450001cb04056bbdcdd6fc152c436c8a74c61",
                "sha256:cf49178021075d47c61c03c0229ac0c60d5e2830f8cab19e2d88e579b18cdb76",
                "sha256:d5350cb66690915d60f8b233180f1e49938756fb2d501c93c44f8fb5b970cc63",
                "sha256:eba238cf1989dfff7d483c029acb0ac4fcbfc15de295d682901f0e2497e6781a"
            ],
            "index": "pypi",
            "version": "==5.6.3"
        }
    },
    "develop": {
        "mysqlclient": {
            "hashes": [
                "sha256:79a498ddda955e488f80c82a6392bf6e07c323d48db236033f33825665d8ba5c",
                "sha256:8c3b61d89f7daaeab6aad6bf4c4bc3ef30bec1a8169f94dc59aea87ba2fabf80",
                "sha256:9c737cc55a5dc8dd3583a942d5a9b21be58d16f00f5fefca4e575e7d9682e98c"
            ],
            "index": "pypi",
            "version": "==1.4.4"
        }
    }
}

Если я поместил их в каталог и запустилВ следующей последовательности команд я получаю два файла с хэшами sha1.

# Sync once
PIPENV_VENV_IN_PROJECT=true pipenv sync
find .venv/ -type f -print0 | xargs -0 openssl sha1 > sha1_all.txt
mv sha1_all.txt sha1_all_v1.txt
rm -rf .venv/

# Sync a second time
PIPENV_VENV_IN_PROJECT=true pipenv sync
find .venv/ -type f -print0 | xargs -0 openssl sha1 > sha1_all.txt

Если я тогда diff sha1_all_v1.txt и sha1_all.txt, я наблюдаю несколько бинарных файлов, которые отличаются.

Есть ли какое-то волшебное заклинание, которое я могу использовать, чтобы сделать последовательные выходные данные сборки побитно-идентичными?

...