Title: Re: [Ironpython-users] IPY 2.7.2.1. Using pyc.py for standalone exe
Thursday, March 15, 2012, 3:49:36 AM, you wrote:


I am not sure whether this should be expected to work or not, nor if I am using this correctly...

I tried to generate a standalone exe for a tool I have (3 modules) but it bombs out at startup with:

Unhandled Exception: IronPython.Runtime.Exceptions.ImportException: No module named os
   at DLRCachedCode.__main__$1(CodeContext $globalContext, FunctionCode $functionCode)
   at IronPython.Compiler.OnDiskScriptCode.Run()
   at IronPython.Runtime.PythonContext.InitializeModule(String fileName, ModuleContext moduleContext, ScriptCode scriptCode, ModuleOptions options)
   at IronPython.Runtime.ModuleLoader.load_module(CodeContext context, String fullName)
   at Microsoft.Scripting.Interpreter.FuncCallInstruction`4.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
   at Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,TRet](T0 arg0, T1 arg1, T2 arg2, T3 arg3)

I can reproduce with this simple foo.py module

# foo.py
import os
print "Hello"
print "OS:",
os.name
print "Bye"
#end foo.py

which I compile with the following:

    ipy -m pyc /standalone /main:foo.py /target:exe /out:foo
or
    ipy -m pyc /main:foo.py /target:exe /out:foo2

Starting either foo.exe or foo2.exe fails with above error.

If I remove the import os and the line that uses 
on.name, I get an executable that works...

Is this a bug or a misunderstanding in what I expect to work?
If so what are the correct steps?

Thanks for your help

D.

############################
# Dominique de Waleffe
# ddewaleffe -at- gmail -dot- com
# domi -at- dewaleffe -dot- org
############################


I'll try to help, since I got a lot of help with something similar recently.  Congratulations - you got further before asking for help than I did...

It seems that you don't have the path to your CPython directory in your environment variables.  I thought installing IronPython automatically set those variables, but maybe CPython got moved or something?  In any case, you can add it like this:

import sys
sys.path.append(r"c:\python24\lib")

And if you plan on distributing the exe to another machine that doesn't have CPython installed, you need to put a copy of all the modules your script needs in a zip file located in the same directory as the exe and put the line 

sys.path.append('zipfile.zip')

in your script before importing those modules...

Mark
_______________________________________________
Ironpython-users mailing list
Ironpython-users@python.org
http://mail.python.org/mailman/listinfo/ironpython-users

Reply via email to