From "[Distutils] pip and missing shared system system library" https://mail.python.org/archives/list/distutils-sig@python.org/message/7TCZJT2RDE36BJKUDU6JVTIUYHGVDVQY/  :

> Existing workarounds for building and distributing portable binaries:
> W/ shared library dependencies:
> - auditwheel & manylinux
> - package managers which support arbitrary binary packages in languages other than python:
>  - conda
>  - RPM / DEB / ...
>  - bdist_rpm
>  - bdist_deb
>   - FPM
>
> W/ static dependencies:
> - zipapp
> - bazel / buck build / pants build (BUILD files)
> - py2app, py2exe, pyinstaller, 
>
https://github.com/vinta/awesome-python#distribution

To py2app, py2exe, and pyinstaller, I'd add conda constructor:

> Constructor is a tool which allows constructing an installer for a collection of conda packages. It solves needed packages using user-provided specifications, and bundles those packages. It can currently create 3 kinds of installers, which are best thought of as delivery vehicles for the bundled packages. There are shell installers, MacOS .pkg installers, and Windows .exe installers. Each of these will create an environment on the end user's system that contains the specs you provided, along with any necessary dependencies. These installers are similar to the Anaconda and Miniconda installers, and indeed constructor is used to create those installers.

https://github.com/conda/constructor

https://docs.python-guide.org/shipping/freezing/#freezing-your-code could be updated

On Tue, Nov 24, 2020, 9:29 PM Oscar Benjamin <oscar.j.benjamin@gmail.com> wrote:
On Sat, 21 Nov 2020 at 09:30, Ronald Oussoren via Python-ideas
<python-ideas@python.org> wrote:
>
>
>
> > On 20 Nov 2020, at 16:42, Ricky Teachey <ricky@teachey.org> wrote:
> >
> > I was reading the pyinstaller thread and had this idea but didn't want to hijack.
> >
> > Maybe a wild idea, and very possible totally impractical or hopelessly complex, but: could the existing pypi infrastructure be leveraged into a set of platform-specific app stores? Maybe maybe we could make it as simple as a single line in a pyproject.toml file.
> >
> > Imagine if all the end user does is install the store, and clicks the link to the project app. The store takes care of the rest. The developer marks their package as an installable program to be published to the store, optionally specifying things like specific platforms if needed. All the project website does for users to install is provide a url to their app in the store.
> >
> > Very very rough idea of how it might work: a store app API would provide an installation GUI if desired, and the store would build the environment needed for installing the package and dependencies. Once the specified environment is built, pip would take care of installing the package as usual.
> >
> > If this is an awful idea feel free to just say so. I have given it no deep thought and do not have the expertise to even think through what would be needed to create such a thing.
>
> In some sense PyPI already is such a store, if you don’t mind launching applications from the command line.
>
> That said, using PyPI in this way is not necessarily useful even ignoring platforms where side-loading is frowned upon or even impossible. As a user of applications I don’t really care in what language an application is written in, I don’t wan to look in the Python App Store, or the C# App Store, I just wan to use application A.

Maybe a good solution could be if it was easy to put a Python-based
application into something like the Microsoft Store. It would be
useful if there was a library that could easily produce the
appropriate format for that (I don't know if one already exists) with
all dependencies bundled.

--
Oscar
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-leave@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/XPBM6YAPZRY5OF6IDN27R6HW5I7RKZLI/
Code of Conduct: http://python.org/psf/codeofconduct/