Skip to content

Differences in behaviour of sync and install -r when ignoring dependencies due to environment mismatch #6099

@jdsalaro

Description

@jdsalaro

Issue description

There are differences in behaviour when it comes to the dependencies which are ignored or installed whenever sync or install -r are used.

Assume a scenario where a user wishes to update a project written originally for an earlier Python version, 3.9, together with all its dependencies but the original Pipfile doesn't contain the exact versions pinned or is missing altogether. However, assume either the requirements.txt or the Pipfile.lock files are available.

Expected result

One would expect that the results of pipenv sync and pipenv install -r requirements.txt, in the later Python environment, are equivalent, but this is not the case.

In the case of a migration, say from Python 3.9 to 3.11, and when using pipenv sync, dependencies for which python_version marker mismatches are observed will be ignored.

However, in the same scenario, when using pipenv install -r the same dependencies will still be installed.

Actual result

requirements.txt

-i https://pypi.org/simple
tomli==2.0.1; python_version < '3.11'
typing-extensions==4.7.1; python_version < '3.10'
zipp==3.16.0; python_version < '3.10'
...
Installing collected packages: zipp, typing-extensions, tomli

Successfully installed tomli-�[1m2.0�[0m.�[1m1�[0m typing-extensions-�[1m4.7�[0m.�[1m1�[0m zipp-�[1m3.16�[0m.�[1m0�[0m
...

sync

{
    "_meta": {
        "hash": {
            "sha256": "6d18433f07ef40ac8e479c1972d2fd8a96f2fca453118ddd0e2c516642307a6f"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "3.9"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "tomli": {
            "hashes": [
                "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc",
                "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"
            ],
            "markers": "python_version < '3.11'",
            "version": "==2.0.1"
        },
        "typing-extensions": {
            "hashes": [
                "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36",
                "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"
            ],
            "markers": "python_version < '3.10'",
            "version": "==4.7.1"
        },
        "zipp": {
            "hashes": [
                "sha256:1876cb065531855bbe83b6c489dcf69ecc28f1068d8e95959fe8bbc77774c941",
                "sha256:5dadc3ad0a1f825fe42ce1bce0f2fc5a13af2e6b2d386af5b0ff295bc0a287d3"
            ],
            "markers": "python_version < '3.10'",
            "version": "==3.16.0"
        }
    },
    "develop": {}
}
...
Ignoring tomli: markers 'python_version < "3.11"' don't match your environment
Ignoring typing-extensions: markers 'python_version < "3.10"' don't match your environment
Ignoring zipp: markers 'python_version < "3.10"' don't match your environment
...

Steps to replicate

The Pipfile.lock and requirement.txt files together with pipenv installation logs discussed here can be found in this repository: https://gitlab.com/jdsalaro-group/public/pipenv-sync-install-requirements-differences


$ pipenv --support

Pipenv version: '2023.11.15'

Pipenv location: '/Users/user/.asdf/installs/python/3.11.0/lib/python3.11/site-packages/pipenv'

Python location: '/Users/user/.asdf/installs/python/3.11.0/bin/python3.11'

OS Name: 'posix'

User pip version: '23.3.1'

user Python installations found:

PEP 508 Information:

{'implementation_name': 'cpython',
 'implementation_version': '3.11.0',
 'os_name': 'posix',
 'platform_machine': 'arm64',
 'platform_python_implementation': 'CPython',
 'platform_release': '23.3.0',
 'platform_system': 'Darwin',
 'platform_version': 'Darwin Kernel Version 23.3.0: Wed Dec 20 21:30:44 PST '
                     '2023; root:xnu-10002.81.5~7/RELEASE_ARM64_T6000',
 'python_full_version': '3.11.0',
 'python_version': '3.11',
 'sys_platform': 'darwin'}

System environment variables:

  • PATH
  • MANPATH
  • TERM_PROGRAM
  • SHELL
  • TERM
  • ASDF_DIR
  • TMPDIR
  • HOMEBREW_REPOSITORY
  • TERM_PROGRAM_VERSION
  • ASDF_DEFAULT_TOOL_VERSIONS_FILENAME
  • TERM_SESSION_ID
  • USER
  • COMMAND_MODE
  • SSH_AUTH_SOCK
  • __CF_USER_TEXT_ENCODING
  • LaunchInstanceID
  • __CFBundleIdentifier
  • PWD
  • ASDF_CONFIG_FILE
  • ITERM_PROFILE
  • XPC_FLAGS
  • XPC_SERVICE_NAME
  • COLORFGBG
  • HOME
  • SHLVL
  • LC_TERMINAL_VERSION
  • HOMEBREW_PREFIX
  • ASDF_DATA_DIR
  • ITERM_SESSION_ID
  • LOGNAME
  • LC_CTYPE
  • HOMEBREW_CELLAR
  • INFOPATH
  • LC_TERMINAL
  • SECURITYSESSIONID
  • COLORTERM
  • PIP_DISABLE_PIP_VERSION_CHECK
  • PYTHONDONTWRITEBYTECODE
  • PYTHONFINDER_IGNORE_UNSUPPORTED

Pipenv–specific environment variables:

Debug–specific environment variables:

  • PATH: /Users/user/.asdf/installs/python/3.11.0/bin:/Users/user/.asdf/installs/python/3.12.0/bin:/Users/user/.asdf/installs/python/3.9.18/bin:/Users/user/.asdf/installs/python/-h/bin:/Users/user/.asdf/installs/python/3.9.1/bin:/Users/user/.asdf/installs/python/3.10.0/bin:/Users/user/.asdf/plugins/python/shims:/Users/user/.asdf/installs/python/3.11.0/bin:/Users/user/.rd/bin:/Users/user/.asdf/shims:/opt/homebrew/opt/asdf/libexec/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin:/Library/TeX/texbin
  • SHELL: /bin/zsh
  • PWD: /tmp/pipenv-sync-install-requirements-differences

Metadata

Metadata

Assignees

No one assigned

    Labels

    Contributor CandidateThe issue has been identified/triaged and contributions are welcomed/encouraged.Status: Awaiting Update ⏳This issue requires more information before assistance can be provided.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions