> I'm starting work on what is going to become a fairly substantial > Python project, and I'm trying to find the best way to organize > everything.
I'd like to add a follow up question. Are there any idioms for writing /usr/bin scripts to run installed package modules? For this I am assuming a simple case where there is a single package with one or more modules all making up a single application. A have a few thoughts, please correct me if I'm wrong. 1. Script code should be as basic as possible, ideally a module import line and function or method call. This is so you don't have to worry about script errors and/or increase startup time because a *.pyc file can not be store in /usr/bin. 2. In the top of your package directory it is typical to have a module name '_package.py'. This is ideally where the main command line entry point for the package code should be placed. 3. In the _package.py file you should add a "class Package" that holds most or all of the application startup/execution code not designated to other modules. Then run the application with the call to "Package()", as in if __name__ == '__main__': Package() Some other questions I have are: A. What should go in the package __init__.py file? For example, a doc describing the program usage seems helpful, but maybe it should have info about your modules only? Assuming the __init__.py code gets executed when you import the module, you could place part or all of the application code here as well. I'm guessing this is not a good idea, but not really convinced. B. How should you import your _package.py module into your /usr/bin script. Is there a way to use an '__all__' to simplify this? Again this goes back to question A, should there be any code added to __init__.py? C. If you have a _package.py file as the application entry, is it worth it to place most of the application code in a class, described in part 3? D. When I import a package._package module, I get a lot of junk in my namespace. I thought an '__all__' define in the module would prevent this, but it does not seem to work. Thanks for reading, - Casey
-- http://mail.python.org/mailman/listinfo/python-list