On Fri, Nov 20, 2020 at 4:18 PM Greg Ewing firstname.lastname@example.org wrote:
On 21/11/20 3:03 am, Paul Moore wrote:
For my own purposes, what I *actually* want is to specify a list of 3rd party packages ... I *don't* want clever logic to decide how to strip out "unused" bits.
I'm pretty sure that you can do that with PyInstller -- you certainly could with py2app. You simply specify these particular packages are to be fully copied over. Last time I worked with PyInstaller, it was a little clunkier, but I think you could still do it.
With venvs, it seems like it should be possible to have a very
simple tool that just packages up everything in your venv. Such a tool ought to be quite small and shouldn't require anything like the amount of maintenance that PyInstaller and its ilk seem to need.
Am I wrong about this?
I don't think you are. And conda is similar -- there is even the "conda constructor" that will build an installer for a conda environment that meets your specs. But the fact is that you get a LOT of extra stuff along with what you need. I've had a lot of complaints as it is with my app bundles being pretty darn large (all of scipy anyone?).
Earlier in this thread, I thought that the idea that the "installer" folks should work more with the PyPA folks didn't make sense - they are really trying to solve different problems. But I now am thinking that PyPA could, in fact, make it a lot easier for bundlers, by providing a standard mechanism to specify what is really needed at run time for a particular package. Maybe.
Though frankly, after having been involved in this for decades (less recently), I've found that the bulk of the Python community is disinterested (if not hostile to) addressing this particular problem. Given how focus has shifted even more to web apps over the years, I don't really see that changing.
But maybe I'm wrong -- I hope so!
BTW, this is not the least bit a new idea. Anyone remember the old "freeze":
https://wiki.python.org/moin/Freeze and https://docs.python.org/2.7/faq/programming.html?highlight=freeze#how-can-i-...
It came with the standard library :-)
And here's a somewhat newer summary: