Chris Warrick

chriswarrick.com · Personal blog · on HN since 2018

Chris Warrick, a developer, writes on Python packaging, virtual environments, PowerShell, CSV and other practical software topics.

What HN saysHN commenters cite his critical Pipenv review and Python packaging overviews, with one saying he has done a lot of thinking and writing on the subject.
19HN people shared it
17linked it in comments
7stories submitted
520story points
10 months agolast shared
2018people per year2026

Most-shared posts

  1. 1
    Pipenv: promises a lot, delivers very little
    9 people · 339 points · first shared 2018 · 222 comments on HN
  2. 2
  3. 3
  4. 4
  5. 5
    Python virtual environments
    1 people · first shared 2025
  6. 6
  7. 7
  8. 8
    Csv is not a standard
    1 people · first shared 2018

What HN people wrote when they linked it

zahlman · 2025-07-17
If you use uv you are using virtual environments. You're merely being shielded from a few minutes worth of education about how they work (https://chriswarrick.com/blog/2018/09/04/python-virtual-environments/)…
BerislavLopac · 2024-12-09
Pipenv is certainly not "officially recommended", and it should be avoided at all costs: https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-deliver…
edfletcher_t137 · 2024-02-04
I included it because the author did, and irked me by openly admitting they recognize the argument but went against it anyway. There is good reason that particular XKCD hits so hard. Chris Warrick has done a ton of thinking - and a lot of writing [1] - on the subject and has very sage things to say about it. But unlike the author, he didn't decide to write another one. Because there are many good reasons not to. Thanks for letting me know you didn't bother reading that follow-up though: pretty clear who is providing zero value here :shrug: [1] In fact, here's more he has to say about it: https://chriswarrick.com/blog/2024/01/15/python-packaging-one-year-lat…
spott · 2023-08-29
For a good discussion about package managers in python: https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packagi… From that page: Poetry isn’t compatible with PEP621(metadata in pyproject.toml), or PEP508 (version markers for dependencies in pyproject.toml) Just some additional context for the discussion. I use poetry, (and pipenv) depending on my use case.
Yoric · 2023-01-27
I haven't followed development of the Python language in a while but this article was featured last week [1] and it does feel like committees. I have followed development of C++ and... yeah, committees and subcommittees. [1] https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packagi…
codethief · 2020-11-19
Regarding not being able to work outside the project root[0]: This is actually one of the things that I love about pipenv! Anaconda, for instance, has environments that are not tied to a directory and are referred to by name (rather than by a directory path) and I've found this to be an absolute nightmare and extremely cumbersome! Not everyone has 10 projects that can share the same environment. (Besides, I would argue they never should.) I, for instance, have 10 projects that all require a slightly different environment and it's much easier to type a generic `pipenv shell` on the command line no matter what project I'm in, rather than trying to remember the Conda environment's name time and again. (Besides, it can be easily automated using .bashrc.) [0]: https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-deliver…
noname120 · 2019-12-13
> The python packaging team was officially recommending it NO! This is a common misconception[1]. Edit: Correction it's not endorsed by the core Python team but it's recommended by the Python Packaging Authority in various places. See replies below for more info. [1] https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-deliver…
tamatsyk · 2018-07-25
Interesting reading, I share some of the points in the post, however, one more dependency manager? Mostly I've used plain `python -m venv venv` and it always worked well. A downside - you need to add a few bash scripts to automate typical workflow for your teammates. Pipenv sounds great but there are some pitfalls as well. I've been going through this post recently and got a bit upset about Pipenv: https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-deliver… Another point is that it does not work well with PyCharm and does not allow to put all dependencies into the project folder as I used to do with venv. (just like to keep everything in one folder to clean up it easily) Are there any better practices to make life easier?
reducesuffering · 2023-01-15
https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packagi… Is quite damning on how much of a better experience Node/JS/TS NPM is than Python's clusterfuck. Working with any other JS/TS open source is easy to get running. Even if you use Poetry in Python, you will run into everyone else using pip-tools, pipenv, pdm, conda, etc.
Kwpolska · 2022-10-03
<datalist> might sound like a good idea, but it tends to be inconsistent between browsers [1]. It also doesn’t work on Firefox on Android (both Focus and standard). It was also broken in web views on Android for 1.5 years [2]. [1]: https://chriswarrick.com/blog/2020/02/09/when-html-is-not-enough-a-tal… (disclaimer: my blog post, from 2 years ago, although most of the issues apply today) [2]: https://bugs.chromium.org/p/chromium/issues/detail?id=949555
sirn · 2020-08-08
Pipenv tries to do so much (e.g. a pipenv command involve poking around procfs to detect shell via shellingham to display colors), used to introduce breaking changes between releases (before they switched the scheme to CalVer), and takes a really long time between each releases (longer for bugs to get fixed). Most people that switched from Pipenv to Poetry were probably done so during the end of 2018 throughout 2019, of which Pipenv has no releases at all[1] (non-alpha/beta version were only released in November 2018 then May 2020). There were a rant from few years ago[2][3] regarding other issues (performance, etc.). [1]: https://news.ycombinator.com/item?id=21781421 [2]: https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-deliver… [3]: https://news.ycombinator.com/item?id=18612590
mlthoughts2018 · 2019-05-01
Here is but one discussion out of the numerous discussions refuting pipenv, - https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-deliver…
throwaway5752 · 2019-05-01
"I haven’t tried it, but I consider Conda/Anaconda unnecessary for most use-cases. Most stuff that used to be difficult to compile/install should now be available as PyPI wheels for multiple platforms." https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-deliver… That is the author of that blog post, replying to a comment there.
aragilar · 2024-01-16
There's also scikit-build (https://scikit-build.readthedocs.io/en/latest/), a wrapper around CMake, like how meson-python is a wrapper around meson, and enscons (https://github.com/dholth/enscons, which is by the original wheel creator), which is a wrapper around SCons (I'm not sure how much maintenance it gets though). It's interesting that the original post (https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packagi… complained about there being too many options (whilst missing the "scientific python" and rust backends, and including wheel (which is part of setuptools now) and venv (which is primarily a library)), when much of the original push to standardise packaging came from the scientific python community (see e.g. https://pypackaging-native.github.io/), and the need to get away from a distutils/setuptools monoculture (given previous attempts at improving the situation e.g. bento).
mcthrowaway123 · 2018-10-17
Here's some sources. This bug in 2017 is characteristic "Pipenv Halloween easter egg" [0]. Pipenv has caused lots of unneeded drama in the Python community[1] - just search for past Pipenv posts. Most of the criticism comes from software developers, and I suspect Pipenv fans are hobbyists (like fuck me for choosing Python in production, right?) I doubt Go's tooling accepts this strange behavior from the maintainers[2]. Kenneth Rietz is NOT a core Python developer. So for my opinion, we have Pipenv instead of Requests support for async/futures, HTTP2.0, Websockets, or better encoding. But the documentation gets updates I see: "Requests is the only Non-GMO... organic, grass-fed HTTP/1.1 requests"[3]. This emojifuck for humans has no drive, so Go has better HTTP packages now. Python's packaging has gotten political. I hate politics. I won't help new programmers with Pipenv, and I don't care if that's good or bad. At least Poetry _respects_ PEPs with it's well-defined specification. But I'm not gonna fight a losing battle. Maybe Pipenv gets ironed out one day. Hell, maybe Java replaces Maven. But I grow weary of immature repo maintainers. I just need working code; yet I feel this answers to nobody. [0] https://github.com/pypa/pipenv/issues/786 [1] https://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-deliver… [2] https://github.com/pypa/pipenv/commit/fe78628903948013e8687d1a3be9fd4d… [3] http://docs.python-requests.org/en/master/
Lazare · 2018-10-12
> There's nothing wrong with CSV as it is for basic data transfer. I disagree. CSV is horribly underspecified and many parsers have conflicting ideas on how things should work. I've hit areas where, for example, an API was generating a CSV that another API could read, but NOT if it was opened and then re-saved by Excel first (just re-saving, not editing), because Excel was making some trivial change in the format that the consuming parser couldn't handle. Then there's issues with encoding, localisation, and escaping (see, eg, https://chriswarrick.com/blog/2017/04/07/csv-is-not-a-standard/ although that's just scratching the surface). That being said, this proposal seems worse in every way that existing CSVs, but I don't think the issue is "there's a well specified CSV standard with tons of parsers that won't change to support this new one", it's more that there is no standard, all the parsers are incompatible, and no meaningful improvements are possible. :(

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close