Pip freeze, vcs urls and pep 517 (feat. editable installs)

I think there’s actually a fundamental design conflict here, that we’ve worked around in a lot of cases - but maybe we should be looking at facing it head on.

Pip treats projects as unique based on the combination of project name and version. The resolver, dependency checks, all that sort of thing work based on that pair of items. But VCS urls, and various other places where we let people point at “this precise bunch of source code, as it is right now”, don’t have that equivalency - it’s possible for the code to change but the version stay the same (and that’s inherent in the view that you’re installing “a specific bunch of source code”, rather than a version of a project).

Refactoring pip internally to make a clear distinction between these two types of project might help rationalise some of this behaviour (e.e. pip freeze), as well as giving us a better handle on what we need to make editable work more cleanly.

2 Likes