Distributing python applications as a zip file

Gary Herron gary.herron at islandtraining.com
Wed Jul 23 01:30:41 EDT 2014


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 at runes:~$ cat __main__.py
> print("NOBODY expects the Spanish Inquisition!!!")
>
> steve at runes:~$ zip appl __main__.py
>    adding: __main__.py (stored 0%)
> steve at runes:~$ rm __main__.py
> steve at runes:~$ python appl.zip
> NOBODY expects the Spanish Inquisition!!!
>
>
> On Linux, you can even hack the zip file to include a shebang line!
>
>
> steve at runes:~$ cat appl
> #!/usr/bin/env python
> # This is a Python application stored in a ZIP archive.
> steve at runes:~$ cat appl.zip >> appl
> steve at runes:~$ chmod u+x appl
> steve at 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




More information about the Python-list mailing list