HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
pypa
pipfile
Python2016–2025
pypa / pipfile

pipfile

Discover this repository through its Hacker News conversations.

13Distinct people
15Mentions
0Explicit recommenders
3.2KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A public description has not been verified.

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year15 dated mentions

Observed mentions: 2016-11-22 05:53:07 UTC to 2025-01-19 15:26:39 UTC.

0123452016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC514
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC404
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC404
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

What Hacker News says

15 sources
Quite a bit has changed in the last three and a half years when it comes to Python packaging. What specifically did you want to highlight here, and why? Anyway, some responses: > there’s one thing that irritates me every single time I revisit the page and that is the misleading recommendation of their own tool pipenv.... PyPA recommends pipenv as the standard tool for dependency management... PyPA still advertises pipenv all over the place and only mentions poetry a couple of times, although poetry seems to be the more mature product. This looks very different now, but I don't think the recommendation was "misleading". The archived page didn't say that the tool was "the standard", just a recommendation. Meanwhile, Poetry lagged behind for years in implementing standards. Pipenv was also focused only on dependency management (which basical
Read the rest
ly == creating venvs + invoking Pip + updating lockfiles), whereas Poetry is designed as a complete workflow tool (== dependency management + build frontend + build backend + package uploader + project metadata management + a bunch of integration + probably stuff I forgot). > You would expect exactly one distribution for Python packages, but here in Python land, we have several ones. Conda came into existence because the scientific Python community needed to solve packaging problems right now (around 2012 - see https://jakevdp.github.io/blog/2016/08/25/conda-myths-and-mi... ) that everyone else was not prepared to deal with. From everything I've heard, it's much less useful for Python now, but you can't make it stop existing. Similarly, Linux distros are going to have their own packaging for everything no matter what you do, and Windows users aren't going to benefit from that packaging. So no, no I would not expect any such thing. > In my opinion, there should be compiled wheels for all packages available that need it, built and provided by PyPI. This was and is completely and utterly infeasible. PyPI already relies on Fastly's generosity in serving over a petabyte of data per day. The resources for a build farm just aren't there (and if they offered one, suddenly everyone would want to use it). Especially since building these projects requires running arbitrary code (to orchestrate arbitrary build processes that need to invoke who-knows-what compiler for who-knows-what language). You'd have to spin up a VM/Docker container/etc. for each build - and then you'd find that you don't have a way to communicate the build-time requirements, and even if you did you'd have to rely on what PyPI could provide. Of course, you could do it for pure Python projects, but these are (and were) trivial to build locally anyway. > Then you have manylinux, an excellent idea to create some common ground for a portable Linux build distribution. However, sometimes when a new version of manylinux is released some upstream maintainers immediately start supporting only that version, breaking a lot of systems. I'm not convinced that, by mid-2021, there had been enough versions of the manylinux wheel standard to make this claim confidently. > For the longest time, the setup.py and requirements.txt were (and, spoiler alert: still is) the backbone of your packaging efforts. In setup.py you define the meta data of your package, including its dependencies.... you’ll still have to provide that file with an empty setup() in order to allow for editable pip installs. In my opinion, that makes this feature useless This seems like an overreaction. Pulling metadata out of setup.py solves an important practical problem: you don't need to run setup.py to get the metadata, which means you don't need to have your build environment set up (which might come into play if you want setup.py to `import` something third-party), which means you don't need to already have the metadata (the `setup_requires` keyword argument to `setup()`). It was really not necessary to have a setup.py in 2021, certainly not for pure Python projects. Other build backends existed (besides Poetry's, too). But you could go without `setup.py` even with Setuptools as your backend since April of 2019, if you didn't need editable wheels. (Pip started supporting PEP 517 editable wheels in October 2021, but I don't know what build systems would have supported them - Setuptools didn't until August 2022.) And the thing is, you don't need editable wheels. They're a hack, and a complex 99% solution for something where the 98% solution is literally creating a one-line `.pth` file in the appropriate `site-packages` folder. > Pipfile and Pipfile.lock are supposed to replace requirements.txt some day. I don't know that PyPA was still making this claim in 2021, but if they were it was naive. They gave up on maintaining the Pipfile spec in early 2022 (https://github.com/pypa/pipfile) and most of the ideas were subsumed by pyproject.toml anyway. Lock files turned out to be a much harder problem, currently being worked on (https://peps.python.org/pep-0751/). > pip and setuptools support pyproject.toml to some extent, but not to a point where it completely replaces setup.py yet. pyproject.toml isn't meant as a replacement for setup.py and can never really be one. The point is that setup.py can now be focused on orchestrating the build, rather than metadata. > Ironically, Python settled for the TOML file format here, although there is currently no support for reading TOML files in Python’s standard library. It was still the right choice IMO. Tools like Pip just vendored third-party support and one of those packages made it into the standard library in late 2022 (Python 3.11). > Regarding the tooling, pip and twine are sufficient and do their job just fine. Pip was sufficient, but I wouldn't call it "just fine" even today. No real problems with Twine, though. You just have to be a bit careful with your API secret key. Poetry adds its own `poetry publish` command which just seems entirely redundant.
In The state of Python packaging in 2021
Pipenv combines package management and virtualenv managment in one tool. You can create a new project as simple as this: $ mkdir myproj $ cd myproj $ pipenv --python 3.6 # This creates a virtualenv with Python 3.6 for you project. $ pipenv install flask # This installs flask in your virtualenv. $ pipenv run flask # This runs flask in your virtualenv. $ pipenv run python # This runs a REPL with the interpreter of your venv. $ pipenv shell # This opens a shell in your venv. Pipenv replaces requirements.txt with Pipfile and Pipfile.lock. (Similar to what you get from npm or yarn in the JS world, and cargo in Rust) If you use pipenv for a project, you no longer need to care about pip, requirements.txt or virtualenv. Pipenv/Pipfile is the new standard recommended b
Read the rest
In My Python Development Environment, 2018 Edition
One thing in particular Pipenv/pipfile needs to address is a standardised calculation of the hashed virtualenv paths. I tried creating a PR for SublimeText's Anaconda plugin, and realised that right now it requires 4(!) separate subprocess calls, each of which starts a Python process to simply get the path of the current project's virtualenv. Until there is a very simple way (a max. 10-20 line function) to calculate this path, including a reference implementation in Python and JS, there is no way widespread editor support can happen. https://github.com/pypa/pipfile/issues/88 https://github.com/pypa/pipenv/issues/985 https://github.com/DamnWidget/anaconda/issues/717 https://github.com/DamnWidget/anaconda/pull/720
In ​Pipenv: One Year Later and a Call for Help
> Finally, a big upside of setup.py, is that I can programatically generate information, whereas pbr's cfg file doesn't seem to allow that. The problem with package manifests that are arbitrary scripts (Python, Ruby and probably others) is that you lose even basic introspectability into rudimentary parameters like name, version, dependencies unless your threat model allows for executing random code that people put into the setup.py. This can be mitigated by using complex static analysis carefully crafted for the specific task, but this isn't easy to implement and there is a non-insignificant amount of cases where the data cannot be legitimately decided. I'm just wondering how this is conceptually different from Pipfiles: https://github.com/pypa/pipfile (Previous discussion https://news.ycombinator.com/item?id=13011932)
In Packaging Python software with pbr
The section titled "So Why Does Abstract and Concrete Matter?" on Donald's post explains pretty clearly why you can't have these two types of dependencies in the same file. There is another discussion on the Pipfile repo about this that may also clarify things for you [0]. The example I posted there [1], which I'll post again here, is: --- A project can only have 1 set of abstract dependencies (setup.py/pyproject.toml), but different users working with that project can have different sets of concrete dependencies (requirements.txt/Pipfile) which allow them to fulfill those abstract dependencies from PyPI mirrors, private package indexes, personal forks on GitHub, or somewhere else. So if project Car depends on Engine (an abstract dependency), I can choose to install Car but grab Engine specifically from a fork I made on GitHub (a concrete
Read the rest
dependency) that has some performance improvements. Meanwhile, someone else working at a big company that doesn't want to depend on external services to build and deploy their internal Python projects can choose to install both Car and Engine from their private package index as opposed to PyPI (another concrete dependency). You can't merge these two types of dependencies together into one file without hampering people's ability to choose where to get their dependencies from. --- According to another commenter on that issue [2], both Rust and Ruby have a similar split in how they specify dependencies. [0] https://github.com/pypa/pipfile/issues/27 [1] https://github.com/pypa/pipfile/issues/27#issuecomment-26228... [2] https://github.com/pypa/pipfile/issues/27#issuecomment-26226...
In Pipfile for Python
There were clear fears/risks/concerns stated by witten directly above. I didn't invent the idea of fears being stated out of whole cloth. > subject to all the abuse you can introduce > might cause [...] problems I've said a few things about the potential benefits, though I am not involved in the project. The actual authors offer the best list of benefits: https://github.com/pypa/pipfile#the-concept They also point out this will eventually be built into pip, so it will have the benefits of all the existing workarounds like pip-tools without any setup. It does seem like a lot more than change for the sake of change, and along with it since there is so much change why not take the opportunity to adopt a flexible DSL built for future extension so there is less real change in the future.
In Pipfile for Python

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.