On 07/22/2014 09:23 PM, Steven D'Aprano wrote:
A little known feature of Python: you can wrap your Python application in
a zip file and distribute it as a single file. The trick to make it
runnable is to put your main function inside a file called __main__.py
inside the zip file. Here's a basic example:
steve@runes:~$ cat __main__.py
print("NOBODY expects the Spanish Inquisition!!!")
steve@runes:~$ zip appl __main__.py
adding: __main__.py (stored 0%)
steve@runes:~$ rm __main__.py
steve@runes:~$ python appl.zip
NOBODY expects the Spanish Inquisition!!!
On Linux, you can even hack the zip file to include a shebang line!
steve@runes:~$ cat appl
#!/usr/bin/env python
# This is a Python application stored in a ZIP archive.
steve@runes:~$ cat appl.zip >> appl
steve@runes:~$ chmod u+x appl
steve@runes:~$ ./appl
NOBODY expects the Spanish Inquisition!!!
It's not quite self-contained, as you still need to have Python
installed, but otherwise it's a good way to distribute a Python
application as a single file that users can just copy and run.
Really! 20 years of Pythoning, and I'd never seen this! When was this
introduced?
Gary Herron
--
https://mail.python.org/mailman/listinfo/python-list