Today I had to downgrade fastapi from 0.114.0 to 0.112.4 to make a software work. And it just hit me - what if pip didn’t support 0.112.4 anymore? We would lose a good piece of software just because of that.

Of course, we can “freeze” the packages into an executable that will run for as long as the OS supports it. Which is a lot longer. But the executable is closed source. We can’t see the code that is run from an executable.

Therefore, there is a need for an alternative to which we still have access to the packages even after the program is built. That would make it safely unnecessary for pip to store all versions of all packages forever more.

Any ideas?

38 points

If its an open source project, the answer is to rebuild from the tagged source.

Eg: https://github.com/fastapi/fastapi/tree/0.112.4

With the right repo setup, you can pip install git+https://github.com/fastapi/fastapi.git@0.112.4 (example only, not sure it works), so pypi doesn’t need to keep all previous wheels, its just easier for it to do so.

permalink
report
reply
6 points

There’s plenty of open source projects that distribute executables (i.e. all that use compiled languages). The projects just provide checksums, ensure their builds are reproducible, or provide some other method to verify.

In practice, you’re going to wind up in dependency hell before pypi stops hosting the package. E.g. you need to use package A and package B, but package A depends on v1 of package C, and package B depends on v2 of package C.

And you don’t need to use pypi or pip at all. You could just download the code and directly from tbe repo, import it into your project (possibly needing to build if it has binary components). However, if it was on pypi before, then the source repo likely had all the code pip needs to install it (i.e. contains setup.py and any related files).

permalink
report
reply
6 points

There are hellish things such as guix for that.

Or ideally the software needs to be upgraded.

permalink
report
reply
4 points

Nix as well

permalink
report
parent
reply
1 point

btw :)

permalink
report
parent
reply
4 points

Nix

permalink
report
reply
1 point

what if pip didn’t support 0.112.4 anymore?

What do you mean by that? If new versions of Python didn’t run that version of fastapi? If PyPI removed it?

permalink
report
reply
0 points

If prior versions were not support by pip anymore, so yes, if it were removed. There are cases of packages not being supported by the platforms, aren’t there? I’ve run into cases where the package was fully deprecated and not useable or downloadable anymore.

permalink
report
parent
reply
1 point

What do you mean “not supported by the platforms”? And do you mean that or “removed”?

permalink
report
parent
reply
0 points

I couldn’t download it even if I wanted to. That’s what I mean. It returns a message saying it isn’t supported.

permalink
report
parent
reply

Open Source

!opensource@lemmy.ml

Create post

All about open source! Feel free to ask questions, and share news, and interesting stuff!

Useful Links

Rules

  • Posts must be relevant to the open source ideology
  • No NSFW content
  • No hate speech, bigotry, etc

Related Communities

Community icon from opensource.org, but we are not affiliated with them.

Community stats

  • 4.7K

    Monthly active users

  • 1.8K

    Posts

  • 30K

    Comments