Stephen Hansen wrote:


On Sun, Oct 11, 2009 at 10:50 AM, Stef Mientki <stef.mien...@gmail.com <mailto:stef.mien...@gmail.com>> 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.


AHH RUN!

RUN FOR YOUR LIFE :)

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 ( New_Program.py )

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

 New_Program

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.

thanks,
Stef

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to