# Announcement: Pipenv Beta Release

**URL:** <https://discuss.python.org/t/announcement-pipenv-beta-release/4051>\
**Category:** Packaging\
**Tags:** release\
**Created:** [May 1, 2020, 8:38pm UTC](https://discuss.python.org/t/announcement-pipenv-beta-release/4051 "2020-05-01T20:38:12Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![techalchemy](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/techalchemy/32/238_2.png) [@techalchemy](https://discuss.python.org/u/techalchemy)\
**Post date:** [May 1, 2020, 8:38pm UTC](https://discuss.python.org/t/announcement-pipenv-beta-release/4051/1 "2020-05-01T20:38:12Z")

</div>

# Pipenv (pre)release announcement

## We have a new (pre)release out

I am happy to announce the (pre)release of pipenv v2020.4.1b1, available on PyPI for testing. To install: `pip install --pre --upgrade pipenv`.

To leave time for testing, we are targeting Thursday, 7 May for the final release - so please help us test this, and report your bugs soon.

## What’s new

This release has a ton of bugfixes, performance improvements and enhancements, including:

- Improved dependency and dependency conflict resolution for VCS dependencies, specified in `Pipfile` or as direct URLs in `setup.py`
- Extensive improvements to output and error formatting
- Better hash discovery, caching, & resolution
- Fixes for encoding issues, input parsing/escaping, and various bugs (which could sometimes cause confusing issues when pipenv would search for `python` on your path)
- Support for the environment management utility [ASDF](https://github.com/asdf-vm/asdf) + improved support for [pyenv](https://github.com/pyenv/pyenv)
- A whole lot more

For a draft of the changelog, see below. (After the release, it will go [in our docs](https://pipenv.pypa.io/en/latest/changelog/).)

## What we need help testing

You can use [this testing guide](https://pad.sfconservancy.org/p/help-test-pipenv-2020-03-26) for some ideas and workflows to get you started.

If you have a bug to report, please file it at [https://github.com/pypa/pipenv/issues](https://github.com/pypa/pipenv/issues) . If you need to ask a question, please ask on [https://stackoverflow.com/](https://stackoverflow.com/) (with the tag “pipenv”), or visit the `#pypa` channel on Freenode IRC [https://webchat.freenode.net/?channels=%23pypa](https://webchat.freenode.net/?channels=%23pypa) .

## Other changes in the project

This is a little lengthy – feel free to skim/skip.

- **Process changes** : I’ve been a single point of failure in the release pipeline, which is a reason this release is so delayed. To mitigate this bus factor, I’ve [documented release process](https://github.com/pypa/pipenv/blob/master/RELEASING.md)) and automated it. Even though Pipenv has had ongoing development, it has been impossible for anyone to push new releases to PyPI – addressing this is a top priority. Similarly, I need to be more of a reviewer and less of a PR author, to enable other contributors and reduce review lag.
- **Communications changes** : We are looking ahead with an eye to collaboration and community engagement – we have had some past challenges and have been looking to improve how we approach our interactions. I personally joined the project because my coworkers who were new to Python struggled with specific workflows. I wanted to help address this genuine need I saw around me. I recognize that you are all, similarly, contributing your time and effort in good faith to make things better for everyone. We don’t all face the same challenges, but hopefully we can leverage our diverse backgrounds to build even better tools.
  - Looking forward, I am hoping to convey this as I engage with you all about how to make things better for users of Pipenv and of Python in general. Part of this means my role will likely shift somewhat, and I will focus more on engagement, review, triage, and onboarding new maintainers. If you see me writing a bunch of PRs instead of encouraging and reviewing others’, feel free to gently poke me about that. 🙂 Habits can be hard to break.

- **Release cadence & financial support** : Pipenv hasn’t pushed a new release in over a year – that is super frustrating. Canonical is paying me and enabling me to work on Pipenv as part of my job (20% of the time), but that’s not enough to get us sustainably on a better release cadence, take care of bug reports and PRs, manage development on tricky bugs, and set us up for a future where I might not be around. In fact, this release was only possible because of the generous project management contributions donated by [Changeset Consulting LLC](https://changeset.nyc/). If your company uses Pipenv, ask them to [sponsor Python packaging via the PSF](https://pyfound.blogspot.com/2020/04/sponsoring-python-packaging.html) so there’s a stronger fund for packaging work.

## Thanks

- All of the other maintainers, especially @frostming and @uranusjr, who keep the project running whether or not I’m around
- [Changeset Consulting LLC](https://changeset.nyc/), particularly Sumana Harihareswara @brainwane, for donating a ton of project management help to get this release out
- All of the contributors who have stewarded their changes through the sometimes frustrating pull request process (continuous integration is fixed now!)
- Those of you who have filed issues or spoken to me directly to share your needs and use cases to help make the software better
- Our users

## Changelog for 2020.4.1b1 (2020-04-30)

### Features & Improvements

- Added support for resolution of direct-url dependencies in  
`setup.py` files to respect `PEP-508` style URL dependencies. [#3148](https://github.com/pypa/pipenv/issues/3148)
- Added full support for resolution of all dependency types including  
direct URLs, zip archives, tarballs, etc.
  - Improved error handling and formatting.
  - Introduced improved cross platform stream wrappers for better  
`stdout` and `stderr` consistency. [#3298](https://github.com/pypa/pipenv/issues/3298)

- Pipenv will now successfully recursively lock VCS sub-dependencies. [#3328](https://github.com/pypa/pipenv/issues/3328)
- Added support for `--verbose` output to `pipenv run`. [#3348](https://github.com/pypa/pipenv/issues/3348)
- Pipenv will now discover and resolve the intrinsic dependencies of  
**all** VCS dependencies, whether they are editable or not, to  
prevent resolution conflicts. [#3368](https://github.com/pypa/pipenv/issues/3368)
- Added a new environment variable, `PIPENV_RESOLVE_VCS`, to toggle  
dependency resolution off for non-editable VCS, file, and URL based  
dependencies. [#3577](https://github.com/pypa/pipenv/issues/3577)
- Added the ability for Windows users to enable emojis by setting  
`PIPENV_HIDE_EMOJIS=0`. [#3595](https://github.com/pypa/pipenv/issues/3595)
- Allow overriding `PIPENV_INSTALL_TIMEOUT` environment variable (in  
seconds). [#3652](https://github.com/pypa/pipenv/issues/3652)
- Allow overriding PIP\_EXISTS\_ACTION evironment variable (value is  
passed to pip install). Possible values here:  
[https://pip.pypa.io/en/stable/reference/pip/#exists-action-option](https://pip.pypa.io/en/stable/reference/pip/#exists-action-option)  
Useful when you need to `PIP_EXISTS_ACTION=i` (ignore  
existing packages) - great for CI environments, where you need  
really fast setup. [#3738](https://github.com/pypa/pipenv/issues/3738)
- Pipenv will no longer forcibly override `PIP_NO_DEPS` on all vcs and  
file dependencies as resolution happens on these in a pre-lock step. [#3763](https://github.com/pypa/pipenv/issues/3763)
- Improved verbose logging output during `pipenv lock` will now stream  
output to the console while maintaining a spinner. [#3810](https://github.com/pypa/pipenv/issues/3810)
- Added support for automatic python installs via `asdf` and  
associated `PIPENV_DONT_USE_ASDF` environment variable. [#4018](https://github.com/pypa/pipenv/issues/4018)

### Behavior Changes

- Make conservative checks of known exceptions when subprocess returns  
output, so user won’t see the whole traceback - just the error. [#2553](https://github.com/pypa/pipenv/issues/2553)
- Do not touch Pipfile early and rely on it so that one can do  
`pipenv sync` without a Pipfile. [#3386](https://github.com/pypa/pipenv/issues/3386)
- Re-enable `--help` option for `pipenv run` command. [#3844](https://github.com/pypa/pipenv/issues/3844)
- Make sure `pipenv lock -r `–pypi-mirror` {MIRROR_URL}`  
will respect the pypi-mirror in requirements output. [#4199](https://github.com/pypa/pipenv/issues/4199)

### Bug Fixes

- Raise `PipenvUsageError` when `[[source]]` does not  
contain url field. [#2373](https://github.com/pypa/pipenv/issues/2373)
- Fixed a bug which caused editable package resolution to sometimes  
fail with an unhelpful setuptools-related error message. [#2722](https://github.com/pypa/pipenv/issues/2722)
- Fixed an issue which caused errors due to reliance on the system  
utilities `which` and `where` which may not always exist on some  
systems.
  - Fixed a bug which caused periodic failures in python discovery  
when executables named `python` were not present on the target  
`$PATH`. [#2783](https://github.com/pypa/pipenv/issues/2783)

- Dependency resolution now writes hashes for local and remote files  
to the lockfile. [#3053](https://github.com/pypa/pipenv/issues/3053)
- Fixed a bug which prevented `pipenv graph` from correctly showing  
all dependencies when running from within `pipenv shell`. [#3071](https://github.com/pypa/pipenv/issues/3071)
- Fixed resolution of direct-url dependencies in `setup.py` files to  
respect `PEP-508` style URL dependencies. [#3148](https://github.com/pypa/pipenv/issues/3148)
- Fixed a bug which caused failures in warning reporting when running  
pipenv inside a virtualenv under some circumstances.
  - Fixed a bug with package discovery when running `pipenv clean`. [#3298](https://github.com/pypa/pipenv/issues/3298)

- Quote command arguments with carets (`^`) on Windows to work around  
unintended shell escapes. [#3307](https://github.com/pypa/pipenv/issues/3307)
- Handle alternate names for UTF-8 encoding. [#3313](https://github.com/pypa/pipenv/issues/3313)
- Abort pipenv before adding the non-exist package to Pipfile. [#3318](https://github.com/pypa/pipenv/issues/3318)
- Don’t normalize the package name user passes in. [#3324](https://github.com/pypa/pipenv/issues/3324)
- Fix a bug where custom virtualenv can not be activated with pipenv  
shell [#3339](https://github.com/pypa/pipenv/issues/3339)
- Fix a bug that `--site-packages` flag is not recognized. [#3351](https://github.com/pypa/pipenv/issues/3351)
- Fix a bug where pipenv `--clear` is not working [#3353](https://github.com/pypa/pipenv/issues/3353)
- Fix unhashable type error during  
`$ pipenv install --selective-upgrade` [#3384](https://github.com/pypa/pipenv/issues/3384)
- Fixed a keyerror which could occur when locking VCS dependencies in  
some cases. [#3404](https://github.com/pypa/pipenv/issues/3404)
- Fixed a bug that `ValidationError` is thrown when some fields are  
missing in source section. [#3427](https://github.com/pypa/pipenv/issues/3427)
- Updated the index names in lock file when source name in Pipfile is  
changed. [#3449](https://github.com/pypa/pipenv/issues/3449)
- Fixed an issue which caused `pipenv install --help` to show  
duplicate entries for `--pre`. [#3479](https://github.com/pypa/pipenv/issues/3479)
- Fix bug causing `[SSL: CERTIFICATE_VERIFY_FAILED]` when Pipfile  
`[[source]]` has verify\_ssl=false and url with custom port. [#3502](https://github.com/pypa/pipenv/issues/3502)
- Fix `sync --sequential` ignoring `pip install` errors and logs. [#3537](https://github.com/pypa/pipenv/issues/3537)
- Fix the issue that lock file can’t be created when `PIPENV_PIPFILE`  
is not under working directory. [#3584](https://github.com/pypa/pipenv/issues/3584)
- Pipenv will no longer inadvertently set `editable=True` on all vcs  
dependencies. [#3647](https://github.com/pypa/pipenv/issues/3647)
- The `--keep-outdated` argument to `pipenv install` and `pipenv lock`  
will now drop specifier constraints when encountering editable  
dependencies.
  - In addition, `--keep-outdated` will retain specifiers that would  
otherwise be dropped from any entries that have not been  
updated. [#3656](https://github.com/pypa/pipenv/issues/3656)

- Fixed a bug which sometimes caused pipenv to fail to respect the  
`--site-packages` flag when passed with `pipenv install`. [#3718](https://github.com/pypa/pipenv/issues/3718)
- Normalize the package names to lowercase when comparing used and  
in-Pipfile packages. [#3745](https://github.com/pypa/pipenv/issues/3745)
- `pipenv update --outdated` will now correctly handle comparisons  
between pre/post-releases and normal releases. [#3766](https://github.com/pypa/pipenv/issues/3766)
- Fixed a `KeyError` which could occur when pinning outdated VCS  
dependencies via `pipenv lock --keep-outdated`. [#3768](https://github.com/pypa/pipenv/issues/3768)
- Resolved an issue which caused resolution to fail when encountering  
poorly formatted `python_version` markers in `setup.py` and  
`setup.cfg` files. [#3786](https://github.com/pypa/pipenv/issues/3786)
- Fix a bug that installation errors are displayed as a list. [#3794](https://github.com/pypa/pipenv/issues/3794)
- Update `pythonfinder` to fix a problem that `python.exe` will be  
mistakenly chosen for virtualenv creation under WSL. [#3807](https://github.com/pypa/pipenv/issues/3807)
- Fixed several bugs which could prevent editable VCS dependencies  
from being installed into target environments, even when reporting  
successful installation. [#3809](https://github.com/pypa/pipenv/issues/3809)
- `pipenv check --system` should find the correct Python interpreter  
when `python` does not exist on the system. [#3819](https://github.com/pypa/pipenv/issues/3819)
- Resolve the symlinks when the path is absolute. [#3842](https://github.com/pypa/pipenv/issues/3842)
- Pass `--pre` and `--clear` options to `pipenv update --outdated`. [#3879](https://github.com/pypa/pipenv/issues/3879)
- Honor PIPENV\_SPINNER environment variable [#4045](https://github.com/pypa/pipenv/issues/4045)
- Fixed an issue with `pipenv check` failing due to an invalid API key  
from `pyup.io`. [#4188](https://github.com/pypa/pipenv/issues/4188)

### Vendored Libraries

- Updated `pip_shims` to support `--outdated` with new pip versions. [#3766](https://github.com/pypa/pipenv/issues/3766)

- Update vendored dependencies and invocations

- Add and update vendored dependencies to accommodate `safety`  
vendoring:

- Updated vendored `pip` =\> `20.0.2` and `pip-tools` =\> `5.0.0`. [#4215](https://github.com/pypa/pipenv/issues/4215)

### Improved Documentation

- Added documenation about variable expansion in `Pipfile` entries. [#2317](https://github.com/pypa/pipenv/issues/2317)
- Consolidate all contributing docs in the rst file [#3120](https://github.com/pypa/pipenv/issues/3120)
- Update the out-dated manual page. [#3246](https://github.com/pypa/pipenv/issues/3246)
- Move CLI docs to its own page. [#3346](https://github.com/pypa/pipenv/issues/3346)
- Replace (non-existant) video on docs index.rst with equivalent gif. [#3499](https://github.com/pypa/pipenv/issues/3499)
- Clarify wording in Basic Usage example on using double quotes to  
escape shell redirection [#3522](https://github.com/pypa/pipenv/issues/3522)
- Ensure docs show navigation on small-screen devices [#3527](https://github.com/pypa/pipenv/issues/3527)
- Added a link to the TOML Spec under General Recommendations &  
Version Control to clarify how Pipfiles should be written. [#3629](https://github.com/pypa/pipenv/issues/3629)
- Updated the documentation with the new `pytest` entrypoint. [#3759](https://github.com/pypa/pipenv/issues/3759)
- Fix link to GIF in README.md demonstrating Pipenv’s usage, and add  
descriptive alt text. [#3911](https://github.com/pypa/pipenv/issues/3911)
- Added a line describing potential issues in fancy extension. [#3912](https://github.com/pypa/pipenv/issues/3912)
- Documental description of how Pipfile works and association with  
Pipenv. [#3913](https://github.com/pypa/pipenv/issues/3913)
- Clarify the proper value of `python_version` and  
`python_full_version`. [#3914](https://github.com/pypa/pipenv/issues/3914)
- Write description for `--deploy` extension and few extensions  
differences. [#3915](https://github.com/pypa/pipenv/issues/3915)
- More documentation for `.env` files [#4100](https://github.com/pypa/pipenv/issues/4100)
- Updated documentation to point to working links. [#4137](https://github.com/pypa/pipenv/issues/4137)
- Replace [docs.pipenv.org](http://docs.pipenv.org) with [pipenv.pypa.io](http://pipenv.pypa.io) [#4167](https://github.com/pypa/pipenv/issues/4167)

---

<div class="post-metadata">

**Author:** ![steve.dower](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/steve.dower/32/56_2.png) [@steve.dower](https://discuss.python.org/u/steve.dower)\
**Post date:** [May 2, 2020, 8:12am UTC](https://discuss.python.org/t/announcement-pipenv-beta-release/4051/2 "2020-05-02T08:12:43Z")

</div>

Congrats! And really appreciate your openness about the issues and difficulties managing a significant project.

---

<div class="post-metadata">

**Author:** ![sumanah](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/sumanah/32/1722_2.png) [@sumanah](https://discuss.python.org/u/sumanah)\
**Post date:** [May 28, 2020, 3:10pm UTC](https://discuss.python.org/t/announcement-pipenv-beta-release/4051/3 "2020-05-28T15:10:29Z")

</div>

Per [Work towards next pipenv release](https://discuss.python.org/t/work-towards-next-pipenv-release/3781/5) , Pipenv 2020.5.28 is now out!
