Releases: pypa/pipenv
Releases · pypa/pipenv
Release v2026.5.2
🤖 AI-Generated Changelog
Fixed
- Fixed
pipenv audit --lockedfailing when used withPipfile.lockand the legacy shell completion environment variable
Changed
- Updated shell completion to use
argcompleteinstead 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
🤖 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_compathistory test on Windows wherepexpect.spawnis unavailable, improving cross-platform test reliability - Updated
pygmentsdependency from 2.19.2 to 2.20.0 in examples
🔗 Full Changelog: v2026.5.0...v2026.5.1
Release v2026.5.0
🤖 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
clickandclick_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-metadataandzippfollowing Python 3.9 end-of-life - Remove
cached_propertyPython 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_groupsmarkers before passing dependencies to pip during locking, preventing resolution errors - Prevent duplicate
dependency_groupsmarkers from being written on pylock re-generation - Restore correct ruff linting behavior
- Ensure
PipenvExceptioncallssuper().__init__()sostr(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
🤖 AI-Generated Changelog
Added
--extrasCLI option: Specify optional dependency categories directly from the command line--exclude-indexflag forrequirementscommand: Exclude index URLs from generated requirements outputPIPENV_PYENV_ONLYenvironment variable: Restrict Python discovery exclusively to pyenv, ignoring other Python installationsPIPENV_KEYRING_PROVIDERenvironment 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] requiressupport in Pipfile: Define build system requirements directly in Pipfilepipenv syncfrompylock.toml: Sync environments usingpylock.tomlwithout requiringPipfile.lock- Patch files for pip customizations: Vendored pip customizations are now tracked as patch files for transparency
Changed
pipenv syncandinstall --ignore-pipfilenow work without a Pipfile present--systemflag support improved across multiple commands--allflag forupdateandupgradecommands fixed to correctly target all packages- PyPI
proper_caselookup timeout increased from 0.3s to 3s to reduce failures on slow networks PIPENV_VERSIONenvironment variable is now ignored when running--versionflag- Fish shell completion now supports file path completion for
pipenv runarguments
Fixed
- Shell detection on Windows:
pipenv shellnow correctly launches bash or PowerShell instead of defaulting to cmd - Shell suspension:
pipenv shellnow properly suspends with Ctrl+Z (job control restored) - Shell startup with interactive prompts:
pipenv shellactivates 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_platformshorthand 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_versionin marker evaluation, including major-onlypython_versionvalues - Windows py-launcher full-version matching: Correctly matches
python_full_versionspecifiers 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_versionmismatch 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
distutilsmissing fallback: Falls back tosysconfigwhendistutilsis unavailable (Python 3.12+)- Wheel metadata case preservation: Header install paths now use the wheel metadata package name to preserve original casing
pip.confextra-index hash collection: Hashes frompip.confextra-index URLs are now collected during lockingpip.confindex 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_lookupis now populated from all Pipfile sections when locking non-default categories --whereexit code: Fixed incorrect exit code for the--whereflag_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
venvwhenvirtualenvfails for non-standard interpreters ResolutionTooDeepError: Fixed excessive recursion caused by incorrect marker evaluation during resolutionfix --whereexit code: Corrected exit behavior for the requirements--whereoption
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
🤖 AI-Generated Changelog
Added
- Add
pipenv removecommand as a dedicated subcommand for removing virtualenvs
Deprecated
- Deprecate the
--rmoption in favor of the newpipenv removecommand
Fixed
- Restore
--preflag behavior with pip 26+ by callingcheck_release_control_exclusiveinResolver.pip_options - Guard against empty resolution in
_clean_unused_dependenciesto prevent errors during upgrade cleanup (#6002) - Run
python -m virtualenvfrom an empty directory to preventPYTHONPATHpollution affecting virtual environment creation (#6568)
🔗 Full Changelog: v2026.2.1...v2026.2.2
Release v2026.2.1
🤖 AI-Generated Changelog
Fixed
- Always restore PTY echo state via
try/finallyinfork_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
🤖 AI-Generated Changelog
Added
- Support sequential script execution via TOML array syntax in
[scripts]section - Add
--allflag toinstallandsynccommands to install all Pipfile categories - Support
PIPENV_DEFAULT_CATEGORIESenvironment variable for configuring default package categories - Allow
venv_in_projectto 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-urland fixtrusted-hosthandling inpip.conf - Show download progress during locking phase
- Fix atomic writes for lockfile cache path in bad lock situations
- Fix
--no-binaryoption 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-runhelp text for theupdatecommand - Preserve environment variable references in credentials during
update - Fix
pipenv --rmremoving the wrong virtualenv when.venvdirectory coexists withWORKON_HOMEvenv - Recreate virtualenv when
--pythonversion differs from the existing virtual environment - Fix subdependency local file path resolution
- Fix outdated checks for file-locked packages
- Respect environment markers in
install -rto matchsyncbehavior - Fix
PermissionErroron Windows when scanning restrictedPATHentries - Preserve
file://URL in Pipfile and fix local editable path/file key handling - Fix
uninstall --allno longer wipingPipfile.lock - Use
pathkey for local dependencies andfilekey for remote URLs in Pipfile entries - Fix broken version comparison in system Python version compatibility check
- Fix PowerShell full
.exepath recognition inpipenv activateon 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
shlexcompatibility
Changed
- Update
pythonfindervendored dependency to version 3.0.2 - Expand platform marker support documentation with
platform_machineexamples - Bump
blackfrom 24.3.0 to 26.3.1
🔗 Full Changelog: v2026.1.0...v2026.2.0
Release v2026.1.0
🤖 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
SearchScopedataclass to useslots=Trueparameter, 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
Release v2026.0.2
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