Skip to content

Releases: pypa/pipenv

Release v2026.5.2

03 Apr 20:09

Choose a tag to compare

🤖 AI-Generated Changelog

Fixed

  • Fixed pipenv audit --locked failing when used with Pipfile.lock and the legacy shell completion environment variable

Changed

  • Updated shell completion to use argcomplete instead of the legacy implementation
  • Improved shell completion documentation with migration guide and Git Bash instructions

🔗 Full Changelog: v2026.5.1...v2026.5.2

Release v2026.5.1

01 Apr 04:07

Choose a tag to compare

🤖 AI-Generated Changelog

Fixed

  • Resolved CLI regressions introduced by the argparse migration, including broken command-line options and argument handling
  • Restored environment variable expansion behavior that was lost during the argparse migration
  • Fixed shell history functionality that was affected by recent CLI changes

Changed

  • Skipped fork_compat history test on Windows where pexpect.spawn is unavailable, improving cross-platform test reliability
  • Updated pygments dependency from 2.19.2 to 2.20.0 in examples

🔗 Full Changelog: v2026.5.0...v2026.5.1

Release v2026.5.0

30 Mar 15:02

Choose a tag to compare

🤖 AI-Generated Changelog

Added

  • Add "Did You Mean" suggestions for mistyped subcommands, helping users quickly identify and correct typos in CLI commands
  • Add shell completion support via argcomplete
  • Unvendor click and click_didyoumean, reducing bundled dependencies in favor of external packages

Changed

  • Migrate CLI infrastructure from click to argparse, introducing argparse alongside the existing CLI

Removed

  • Remove vendored importlib-metadata and zipp following Python 3.9 end-of-life
  • Remove cached_property Python 3.7 compatibility fallback
  • Remove colorama Windows console ANSI fix for Windows
  • Remove sphinx-click and vendored click remnants from documentation tooling

Fixed

  • Strip dependency_groups markers before passing dependencies to pip during locking, preventing resolution errors
  • Prevent duplicate dependency_groups markers from being written on pylock re-generation
  • Restore correct ruff linting behavior
  • Ensure PipenvException calls super().__init__() so str(exc) returns the properly formatted message
  • Mark man page test as skipped on Windows to avoid false failures

🔗 Full Changelog: v2026.4.0...v2026.5.0

Release v2026.4.0

28 Mar 09:40

Choose a tag to compare

🤖 AI-Generated Changelog

Added

  • --extras CLI option: Specify optional dependency categories directly from the command line
  • --exclude-index flag for requirements command: Exclude index URLs from generated requirements output
  • PIPENV_PYENV_ONLY environment variable: Restrict Python discovery exclusively to pyenv, ignoring other Python installations
  • PIPENV_KEYRING_PROVIDER environment variable: Enable Windows Credential Manager and other keyring backends for private index authentication
  • PEP 440 version specifiers in python_version: Pipfile now accepts full PEP 440 specifiers (e.g., >=3.10) for Python version constraints
  • [build-system] requires support in Pipfile: Define build system requirements directly in Pipfile
  • pipenv sync from pylock.toml: Sync environments using pylock.toml without requiring Pipfile.lock
  • Patch files for pip customizations: Vendored pip customizations are now tracked as patch files for transparency

Changed

  • pipenv sync and install --ignore-pipfile now work without a Pipfile present
  • --system flag support improved across multiple commands
  • --all flag for update and upgrade commands fixed to correctly target all packages
  • PyPI proper_case lookup timeout increased from 0.3s to 3s to reduce failures on slow networks
  • PIPENV_VERSION environment variable is now ignored when running --version flag
  • Fish shell completion now supports file path completion for pipenv run arguments

Fixed

  • Shell detection on Windows: pipenv shell now correctly launches bash or PowerShell instead of defaulting to cmd
  • Shell suspension: pipenv shell now properly suspends with Ctrl+Z (job control restored)
  • Shell startup with interactive prompts: pipenv shell activates correctly even when shell startup scripts produce interactive output
  • PTY echo restore race condition: Fixed synchronization issue in Docker and similar environments
  • Cross-category dependency resolution: Resolved conflicting version pins when resolving dependencies across multiple categories
  • Package name normalization in Pipfile hash: Package names are normalized before computing the Pipfile hash, preventing spurious lockfile invalidation
  • URL-encoded credentials in Pipfile source URLs: Expanded credentials are now URL-encoded to avoid parsing errors
  • sys_platform shorthand markers: Short-form platform markers are now correctly included in pip requirement lines
  • Python version marker evaluation: Fixed resolution failures caused by incorrect python_full_version in marker evaluation, including major-only python_version values
  • Windows py-launcher full-version matching: Correctly matches python_full_version specifiers when using the Windows py launcher
  • Pipfile whitespace and category corruption: Upgrades no longer corrupt unrelated Pipfile sections or strip formatting
  • Symlink preservation: Normalizing the Pipfile path no longer resolves symlinks unexpectedly
  • Transitive PEP 508 file:// URL dependencies: File-scheme dependencies are now correctly recorded during locking
  • Pipfile python_version mismatch with venv: Records the correct Python version when the venv Python and PATH Python disagree
  • Editable local-path handling: Hardened handling of editable installs for local paths
  • distutils missing fallback: Falls back to sysconfig when distutils is unavailable (Python 3.12+)
  • Wheel metadata case preservation: Header install paths now use the wheel metadata package name to preserve original casing
  • pip.conf extra-index hash collection: Hashes from pip.conf extra-index URLs are now collected during locking
  • pip.conf index suppression at install time: Prevents hash mismatch errors caused by pip.conf injecting extra indexes during install
  • Partial updates preserve transitive dependencies: Pinned packages' transitive dependencies are no longer removed during partial updates
  • Private index resolution for dev packages: index_lookup is now populated from all Pipfile sections when locking non-default categories
  • --where exit code: Fixed incorrect exit code for the --where flag
  • _create_builtin_venv_cmd: No longer incorrectly prepends a drive letter to Unix paths when run on Windows
  • venv fallback for alternative interpreters: Falls back to built-in venv when virtualenv fails for non-standard interpreters
  • ResolutionTooDeepError: Fixed excessive recursion caused by incorrect marker evaluation during resolution
  • fix --where exit code: Corrected exit behavior for the requirements --where option

Security

  • Cryptography dependency bumped to 46.0.6
  • Requests dependency bumped to 2.33.0

🔗 Full Changelog: v2026.2.2...v2026.4.0

Release v2026.2.2

24 Mar 16:09

Choose a tag to compare

🤖 AI-Generated Changelog

Added

  • Add pipenv remove command as a dedicated subcommand for removing virtualenvs

Deprecated

  • Deprecate the --rm option in favor of the new pipenv remove command

Fixed

  • Restore --pre flag behavior with pip 26+ by calling check_release_control_exclusive in Resolver.pip_options
  • Guard against empty resolution in _clean_unused_dependencies to prevent errors during upgrade cleanup (#6002)
  • Run python -m virtualenv from an empty directory to prevent PYTHONPATH pollution affecting virtual environment creation (#6568)

🔗 Full Changelog: v2026.2.1...v2026.2.2

Release v2026.2.1

19 Mar 15:09

Choose a tag to compare

🤖 AI-Generated Changelog

Fixed

  • Always restore PTY echo state via try/finally in fork_compat, ensuring terminal echo is reliably re-enabled even if an error occurs during subprocess execution

🔗 Full Changelog: v2026.2.0...v2026.2.1

Release v2026.2.0

18 Mar 22:26

Choose a tag to compare

🤖 AI-Generated Changelog

Added

  • Support sequential script execution via TOML array syntax in [scripts] section
  • Add --all flag to install and sync commands to install all Pipfile categories
  • Support PIPENV_DEFAULT_CATEGORIES environment variable for configuring default package categories
  • Allow venv_in_project to be set in the [pipenv] section of Pipfile
  • Support inline environment variable assignments in pipenv run
  • Add support for Python Install Manager (pymanager) on Windows

Fixed

  • Respect extra-index-url and fix trusted-host handling in pip.conf
  • Show download progress during locking phase
  • Fix atomic writes for lockfile cache path in bad lock situations
  • Fix --no-binary option not being stored in Pipfile
  • Fix lockfile storing file URLs instead of version strings for index-resolved packages
  • Fix resolver to use Pipfile Python version for marker evaluation
  • Fix --dry-run help text for the update command
  • Preserve environment variable references in credentials during update
  • Fix pipenv --rm removing the wrong virtualenv when .venv directory coexists with WORKON_HOME venv
  • Recreate virtualenv when --python version differs from the existing virtual environment
  • Fix subdependency local file path resolution
  • Fix outdated checks for file-locked packages
  • Respect environment markers in install -r to match sync behavior
  • Fix PermissionError on Windows when scanning restricted PATH entries
  • Preserve file:// URL in Pipfile and fix local editable path/file key handling
  • Fix uninstall --all no longer wiping Pipfile.lock
  • Use path key for local dependencies and file key for remote URLs in Pipfile entries
  • Fix broken version comparison in system Python version compatibility check
  • Fix PowerShell full .exe path recognition in pipenv activate on Windows
  • Suppress PTY echo of setup commands in fork_compat
  • Improve dependency conflict error messages
  • Clean up orphaned virtualenvs after integration tests
  • Fix inline env var Pipfile quoting for shlex compatibility

Changed

  • Update pythonfinder vendored dependency to version 3.0.2
  • Expand platform marker support documentation with platform_machine examples
  • Bump black from 24.3.0 to 26.3.1

🔗 Full Changelog: v2026.1.0...v2026.2.0

Release v2026.1.0

13 Mar 20:01

Choose a tag to compare

🤖 AI-Generated Changelog

Fixed

  • Fixed regression in handling of packaging version strings with prereleases
  • Fixed regression with editable dependencies and extras in lock file resolution
  • Fixed path output displaying an additional leading forward slash
  • Fixed MD5 usage to support FIPS-enabled Python environments
  • Restored max retry behavior for install operations
  • Improved install failure messaging with dependency context

Changed

  • Vendored pip 26.0.1 with updated compatibility patches
  • Updated SearchScope dataclass to use slots=True parameter, resolving __slots__ conflict with default values
  • Bumped virtualenv from 20.35.4 to 20.36.1
  • Bumped urllib3 from 2.6.0 to 2.6.3
  • Clarified path dependency default install behavior in documentation
  • Updated locked dependencies

Security

  • Fixed MD5 checksum handling to use FIPS-compliant alternatives in restricted Python environments

🔗 Full Changelog: v2026.0.3...v2026.1.0

Release v2026.0.3

17 Dec 01:52

Choose a tag to compare

What's Changed

  • Fix pipenv shell --quiet to actually suppress output by @matteius in #6500
  • Exclude docs directory from package distribution by @matteius in #6501
  • Fix zsh parse error in pipenv shell command by @matteius in #6504

Full Changelog: v2026.0.2...v2026.0.3

Release v2026.0.2

10 Dec 23:38

Choose a tag to compare

What's Changed

  • Fix: Allow shell builtins to work with pipenv run by @matteius in #6487
  • Fix: Allow packages with only prerelease versions to be installed by @matteius in #6486
  • Fix: Auto-enable fancy shell mode when Oh My Posh is detected by @matteius in #6488
  • Fix: Preserve environment markers when importing requirements.txt by @matteius in #6489
  • Fix: Unset COLUMNS and LINES before spawning pipenv shell by @matteius in #6490
  • Fix: Use sys.executable -m pipenv instead of bare pipenv command by @matteius in #6491
  • Improve error messages for build wheel failures by @matteius in #6492
  • Add 'pipenv activate' command for current shell activation by @matteius in #6494
  • Docs: Update installation guide for PEP 668 compatibility by @matteius in #6495
  • Add --no-lock flag to 'pipenv requirements' command by @matteius in #6496
  • Add PIPENV_PROJECT_DIR environment variable by @matteius in #6497

Full Changelog: v2026.0.1...v2026.0.2