On Wed, 24 Feb 2021 13:47:40 +0100
Stéfane Fermigier <s...@fermigier.com> wrote:
> On Wed, Feb 24, 2021 at 12:42 PM Paul Moore 
> <p.f.moore-re5jqeeqqe8avxtiumw...@public.gmane.org> wrote:
> 
> > On Wed, 24 Feb 2021 at 10:55, Stéfane Fermigier 
> > <sf-xq1qbjp4wzx54taoqty...@public.gmane.org> wrote:  
> > > There is probably a clever way to reuse common packages (probably via  
> > clever symlinking) and reduce the footprint of these installations.
> >
> > Ultimately the problem is that a general tool can't deal with
> > conflicts (except by raising an error). If application A depends on
> > lib==1.0 and application B depends on lib==2.0, you simply can't have
> > a (consistent) environment that supports both A and B. But that's the
> > rare case - 99% of the time, there are no conflicts. One env per app
> > is a safe, but heavy handed, approach. Managing environments manually
> > isn't exactly *hard*, but it's annoying manual work that pipx does an
> > excellent job of automating, so it's a disk space vs admin time
> > trade-off.
> >  
> 
> There are three ways to approach the question:
> 
> 1) Fully isolated envs. The safest option but uses the most space.
> 
> 2) Try to minimise the number of dependencies installed by interpreting the
> requirements specification in the looser way possible. This is both
> algorithmically hard (see
> https://hal.archives-ouvertes.fr/hal-00149566/document for instance, or the
> more recent https://hal.archives-ouvertes.fr/hal-03005932/document ) and
> risky, as you've noted.
> 
> 3) But the best way IMHO is to compute dependencies for each virtualenv
> independently from the others, but still share the packages, using some
> indirection mechanisms (hard links, symlinks or some Python-specific
> constructs) when the versions match exactly.
> 
> The 3rd solution is probably the best of the 3, but the sharing mechanism
> still needs to be specified (and, if needed, implemented) properly.

I wouldn't want to repeat myself too often, but conda and conda-based
distributions already have sharing through hardlinks (or, on Windows,
whatever is available) baked-in, assuming you install your software
from conda packages.

That also applies to non-Python packages, and to python itself (which
is just a package like any other).

Regards

Antoine.

_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/SIO47UNLRARUCICNOVO75P3BKFE43QK2/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to