organizing your scripts, with plenty of re-use

Carl Banks pavlovevidence at
Tue Oct 6 01:46:12 CEST 2009

On Oct 5, 1:46 pm, Buck <workithar... at> wrote:
> Thanks. I think we're getting closer to the core of this.
> To restate my problem more simply:
> My core goal is to have my scripts in some sort of organization better
> than a single directory, and still have plenty of re-use between them.
> The only way I can see to implement this is to have 10+ lines of
> unintelligible hard-coded boilerplate in every runnable script.
> That doesn't seem reasonable or pythonic.

Well, ignoring Python packaging conventions isn't reasonable or
Pythonic either, but oh well.

Here's what you should do: Create ONE script that is a single entry
point to the everything.  The script would accept a subcommand, set up
the Python path, and invoke the appropirate Python module (NOT script)
corresponding to that subcommand, say by calling a main() function
you've defined within.

Users would invoke the appropirate tool using the appropriate
subcommand (similar to tools like Subversion and GIT).

If you really can't use subcommands, make symlinks to the ONE script,
and have the ONE script check what name it was invoked with.

Notice the key idea in all of this: ONE script.  When you design it
that a file can be used either as a script or as a module, you are
asking for trouble.

Carl Banks

More information about the Python-list mailing list