IronPython编译的IronPython GUI应用程序中的标准库

时间:2012-07-13 09:22:53

标签: ironpython

大家好, 第一次问这里,通常我需要的东西已经在这里得到了回答,但是这个真的很烦我,我找不到答案

我正在使用Visual Studio 2010在Windows 7 64位中开发IronPython(版本2.7.2.1)GUI应用程序。我已经成功编译了整个应用程序,但在调用{{}时我发现了奇怪的行为1}}来自已编译的sys.version应用 以下是执行调用的部分:

.exe

以下是使用clr.AddReference("StdLib") import sys from platform import python_version_tuple print sys.version print sys.path 调用路径主脚本的输出:

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'..]

应用的输出:

.exe

> 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 ()' 中的StdLib是我编译的IronPython标准库dll的clr导入。
正如您所看到的那样,如果我从已编译的应用程序中调用IronPython的clr.AddReference("StdLib")模块的python_version_tuple函数,则会导致platform错误。

那么,我在编译过程中做错了什么? 我应该如何整合IronPython的标准库以与我的应用程序一起分发它们? 谢谢你的帮助! :)

1 个答案:

答案 0 :(得分:1)

这与使用用户创建的引擎的an IronPython Issue有关。基本上,IronPython期望主机在引擎上设置版本变量。 pyc.py创建的可执行文件是主机,它不会设置这些变量。

这将在2.7.4中得到妥善解决,但几个月内不会出现。在此期间,您可以手动设置sys.version以匹配从平台导入之前所需的版本字符串。

import sys
if sys.version == '2.7.2 ()':
    sys.version = '2.7.2 (IronPython 2.7.2.1 (2.7.0.40) on .NET 4.0.30319.239 (32-bit))'