I have a simple IronPython script that will compile an IronPython executable
with multiple source files

http://hex-dump.googlecode.com/svn/trunk/ironpython-gdata-tutorial/tut03/makeexe.py

and to handle the "if __name__ == '__main__':" idom you just need to change
it to:

if __name__ == '__main__' or __name__ == sys.executable:

It's discussed in this post:
http://hex-dump.blogspot.com/2006/08/deploying-gdata-reader-as-executable.html

Mark



On 1/1/07, Michael Foord <[EMAIL PROTECTED]> wrote:

Patrick O'Brien wrote:
> If you compile a python module using PYC and run the resulting
executable,
> the module name is no longer '__main__' and so you cannot make use of
the
> popular idiom:
>
> if __name__ == '__main__':
>
> If you don't use that idiom it makes it impossible to unit test any
> functions in your main module because running the unit tests imports the
> module and runs the main code.  The alternative is to have the main
module
> be as small as possible and put the bulk of the functionality into other
> modules that get imported by the main module.  Which would be fine if
there
> was a way to include those modules in the resulting exe created by PYC,
but
> that doesn't seem to happen for me.  Which means the .py files would
> have to
> ship as well as the .exe and the two .dll files (IronMath.dll and
> IronPython.dll).  And substituting a .pyo file does not work, so what
would
> ship in my app is the source code and for this particular app that would
> not
> be a good thing.
>
> The PYC program lets you specify multiple .py files, but I don't
understand
> what that means.  One file can be marked as main, which is what gets
> executed.  What I don't understand is how the other .py files get used.
> The
> one example of this in the documentation was not terribly helpful for
me.
>
> Anyone have any suggestions?  Did I miss something in my understanding
of
> PYC?  How are others packaging their IronPython apps for distribution to
> customers?
>

We asked about IronPython supporting compiling Python modules so that
they can be imported from, and were told that it probably wouldn't make
it into IronPython 1.X.

That means (my understanding) that PYC can only be used for compiling a
single script with no dependencies (unless you're happy about shipping
those dependencies as source files).

Luckily for us at Resolver, I think we're happy to ship source files. If
you're not happy with this you'll need to resort to other means for
obfuscation (like encryption of source where the decryption is in the
compiled part). This will confound casual observers, but IL is easily
(relatively) decompiled and so will not stop the determined attacker
from breaking your encryption.

Michael
http://www.voidspace.org.uk/python/articles.shtml

>
> ------------------------------------------------------------------------
>
> _______________________________________________
> users mailing list
> [email protected]
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
> ------------------------------------------------------------------------
>
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.1.409 / Virus Database: 268.16.0/610 - Release Date:
30/12/2006

_______________________________________________
users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

_______________________________________________
users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to