packaging python code in zip file

Peter Otten __peter__ at web.de
Thu Dec 9 08:02:09 EST 2010


mark jason wrote:

> hi,
> I have created a python app in eclipse pydev .The app is structured as
> below..
> 
> mypackage
>   |______ __init__.py
>   |______ driver.py
>   |______ helper.py
>   |______ utils.py
> 
> The driver.py has the main program.I have added if
> __name__=="__main__" block in  the
> 
> driver.py and pydev's run configuration has the following values,
> Project : myproject
> Main Module :${workspace_loc:myproject/src/mypackage/driver.py}
>  So,the app runs in pydev without any problems.
> 
> Then I thought of providing the modules as a zip file.So I created a
> zip file containing
> mypackage directory.The user should be able to unzip the zip file and
> run the application from command line .
> 
> What bothers me is that ,the user will have to cd to mypackage folder
> and run python driver.py..
> This doesn't look like the proper way..
> I also thought of  putting the driver,helper,utils modules in a folder
> called mycode and zipping it without the __init__.py file .
> I am not sure which is the correct way.
> Can somebody advise me as to how I can package it better?

If you put a __main__.py file at the top level you can run the zip archive 
directly (requires Python 2.6):

$ echo 'import alpha
> print "main"' > __main__.py
$ mkdir alpha
$ echo 'print "init alpha"' > alpha/__init__.py
$ zip -r demo .
  adding: alpha/ (stored 0%)
  adding: alpha/__init__.py (stored 0%)
  adding: __main__.py (stored 0%)
$ rm -rf __main__.py alpha/
$ ls
demo.zip
$ python demo.zip
init alpha
main

Peter



More information about the Python-list mailing list