About a year ago or so I moved to pyenv and poetry. I have used python for over 10 years it was a game changer. I recommend this guide if your still using pip and venv.<p><a href="https://cjolowicz.github.io/posts/hypermodern-python-01-setup/" rel="nofollow">https://cjolowicz.github.io/posts/hypermodern-python-01-setu...</a>
Honest experience: I switched to this early on because at the time PyPA was pushing it really heavy, and Kenneth's past experience at Heroku meant it was added to their Python buildpacks far too soon.<p>At the time, it was unusable and community responses wildly swung between "its not official", its "PyPA endorsed", "don't like it build your own". Which are fine responses beta version of software, not when you convince the community and several companies that its a stable production ready, langauge endorsed package manager. Ultimately, pipenv in Heroku python buildpack was broken for a long time because of it.<p>Despite being assured it was stable, there were daily Pipenv releases at times, until they stopped for some reason for months.<p>In summary: avoid pipenv unless you really have to use it, otherwise - use poetry.
EW. Avoid. For the tenth time in these comments, use poetry.<p>It's a real shame PyPA endorsed this to be honest, I hope that can be reversed at some point in the future.
What does this tool provide over an in-project .venv/ directory created by venv and populated by pip from an etc/pip/requirement.txt file containing all the packages by version?<p>There seems to be a lot of activity in this area for a seemingly solved problem. Having solved it, people appear to wish to expand the problem to something bigger (such as multiple interpreter versions, for example)<p>I believe the most-common case to be:
1 Choose python version and install on operating system., 2 create .venv/ directory. 3, install packages from package system (pip)., 4 freeze versions to local file. 5 use installed .venv/ and do work.<p>I've got some scripts I use for the above [1] -- must give it some TLC, and I don't understand why people furiously want more than this.<p>[1] <a href="https://github.com/gjvc/python-template-project" rel="nofollow">https://github.com/gjvc/python-template-project</a>
Seeing all the comments in this thread that people have had bad experiences with pipenv, this contrasts with my own experience which has been pretty good. How has pipenv failed for everyone?<p>Gonna take a look at poetry, but would love to hear what problems people have had with pipenv?
There is also Pdm now I recently learned, which is supposed to be a more modern alternative. As an alternative to poetry that is; pipenv is yesterday’s solution.<p><a href="https://pdm.fming.dev/" rel="nofollow">https://pdm.fming.dev/</a>
There wasn't a full release for a year and it broke my pip on Ubuntu 18.04 as I recall - literally it stopped pip from working after I installed it (can't remember why). Avoid.
Poetry all the way here, been a blessing! The fact that Pyenv cannot solve some environments that Poetry can is a no go.<p>Worth noting that Sébastien Eustace is an author of the provisional PEP 621: "Storing project metadata in pyproject.toml"<p><a href="https://www.python.org/dev/peps/pep-0621/" rel="nofollow">https://www.python.org/dev/peps/pep-0621/</a>
Pipenv is problematic in a number of ways, succinctly summarised in this article: <a href="https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-delivers-very-little/" rel="nofollow">https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-l...</a>