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