- Executables forms other than "single file".
4. Support for C extensions.
@CHB, @Barnwell I haven't replied in full to a previous email of Mr Moore, but the no support for C extensions is a crucial point for packaging. If the stdlib has to support a packaging tool, it has to not provide support for C extensions.
It has to do with the nature of Python. The indecisiveness of to include or not C extensions halted the packaging issue. Python is very backwards (in terms of packaging) compared to where it should have been given it's maturity and adoption index. C is not in the spirit of Python. Currently, the only tool included in the stdlib for packaging is Zipapps. As such i am 100% for Zipapps not to include C extensions and to be in a single file. This is in the spirit of packaging for VM-based languages. In other words we must enhance Zipapps as far as possible. The branding of language X runs on billions of devices is as true as it is for Python. We just have to enhance Zipapp more.
- Single files: one must be aware has some severe limitations such as you cannot pack sqlite dbs and save your changes. You can only read data. This applies not only for Zipapps but also for .exe and even jar files. You have to include the path to the resources. This is a reasonable choice. This is why many projects has the structure:
folder1/ folder2/ folder3/ main_compressed_entry_point
The resources are expressed as relative paths and the tool, much like PyInstaller does, gives you your project with codefiles compressed while keeping such a structure
- C extensions: Everybody is welcomed to find ideas on how to execute C extensions while maintaining a Zipped state. In the lack of such a solution, it's better to Zipapps to leave it out.
That's why including the ability to have native executables is a must for Python. Python is different from other languages in the sense that for a dynamic lang, it has close ties with C which gives it fearful powers.
To sum up: For pure Py projects, use Zipapps. For projects including C-extensions use the tool for native executables.