Hi all,
first time to ask here, usually everything i need is already answered here, but this one really is bugging me and i can’t find the answer yet
I’m developing an IronPython (ver 2.7.2.1) GUI App in Windows 7 64 bit with Visual Studio 2010. I’ve succesfully compiled the whole app, but i found a strange behavior when calling sys.version from the compiled .exe app.
Here is the part that do the calling:
clr.AddReference("StdLib")
import sys
from platform import python_version_tuple
print sys.version
print sys.path
And here is the output of calling the main script of path with ipy.exe:
D:\VisualStudioSolutions\MarketingAppSolution\MarketingApp>ipy MarketingApp.py
2.7.2 (IronPython 2.7.2.1 (2.7.0.40) on .NET 4.0.30319.239 (32-bit))
['D:\VisualStudioSolutions\MarketingAppSolution\MarketingApp'..]
And here is the output of calling the compiled .exe app:
> D:\VisualStudioSolutions\MarketingAppSolution\MarketingApp>out\MarketingApp.exe
> 2.7.2 ()
> ['.', 'D:\\VisualStudioSolutions\\MarketingAppSolution\\MarketingApp\\out\\Lib', 'D:\\VisualStudioSolutions\\MarketingAppSolution\\Mar
ketingApp\\out\\DLLs']
> failed to parse CPython sys.version: '2.7.2 ()'
The StdLib in clr.AddReference("StdLib") is the clr import of my compiled dll of IronPython's standard library.
And as you can see that if i called python_version_tuple function of platform module of IronPython from within compiled app, it caused failed to parse CPython sys.version: '2.7.2 ()' error.
So, what am i doing wrong in compilation process?
How should i integrate the IronPython's standard libraries to distribute them along with my application?
Thanks for any help! 🙂
This is related to an IronPython Issue with user-created engines. Basically, IronPython expected hosts to set the version variables on the engine. The executable created by
pyc.pyis a host, and it does not set those variables.This will be properly fixed in 2.7.4, but that won’t be out for a few months. In the meantime, you can manually set
sys.versionto match the version string you want before importing from platform.