getting equal behavior for scripts and modules ?

Stef Mientki stef.mientki at
Sun Oct 11 22:40:31 CEST 2009

Stephen Hansen wrote:
> On Sun, Oct 11, 2009 at 10:50 AM, Stef Mientki <stef.mientki at 
> <mailto:stef.mientki at>> wrote:
> [...] 
>     In languages like Delphi, you get an error message, trying to use
>     circular references,
>     but solving them in large programs with a lot of history can be
>     very painful.
> [...]
>     === solution 1 ===
>     Inserting a launcher into the IDE,
>     so instead of running the application as a script,
>     the file will always be executed as a module.
>     """
> [...]
> Eh. If you must do it this way, just launch the program as 'python -c 
> "import modulename; modulename.main()" <arguments>'. Then the __main__ 
> becomes that little string. The only "cost" then becomes "make sure 
> there's a main function". That's pretty minimal isn't it? Sure you'll 
> make changes to lots of different modules, but only once, and those 
> changes are probably almost boilerplate and simple.
thanks for the tip, your suggestion works equally well,
but I guess it will be somewhat more complicated to implement that as a 
general solution in an IDE.
>     === solution 2  ===
>     Prevent execution of the code in this file if the file is ran as a
>     script.
> Really.. at a certain point all these hacks to get Python to work in 
> some weird-other-unpythony-way WILL come back and make your "large 
> program with lots of history" descend into a pit of chaos and either 
> rise up again and conquer the world in its evil ways, or, just decay 
> and die under the weight of its own hacks :)
ok, I admit it's a little bit tricky, ...
... on the other hand,
I don't see any invalid python statement in the code
> [ I'm still slightly reeling, I admit, for the module you posted the 
> other day which recursively added package directories to PYTHONPATH :) ]
Well that was / is a very rare case:
Design specifications:
- an general purpose builder / distributor / ...
- minimalistic input from the user
- all settings also available from a GUI

So the most minimalistic input I can think of is :

  Exe_Files.append ( )

There is one simpeler line I can think of, namely  :


But as real life is somewhat more complicated, the last line isn't 
discriminative enough.

In the final situation, given the above input, a distro should be build 
(through py2exe + lots of exceptions due to standard libs ;-) ), an inno 
setup installer should be created, the zip file should be uploaded and 
an announcement should be made. So without having to build a parser 
myself, the above code should be pure Python code.

So if there's a better way to implement that one line of code (or in 
real life it might grow to 10 lines with user content) in a script 
performing these tasks, please let me know.


More information about the Python-list mailing list