0

大家好,第一次在这里问,通常我需要的一切都已经在这里回答了,但是这个真的很困扰我,我还找不到答案

我正在使用 Visual Studio 2010 在 Windows 7 64 位中开发 IronPython(版本 2.7.2.1)GUI 应用程序。我已经成功编译了整个应用程序,但是从编译的应用程序调用时我发现了一个奇怪的行为。 这是调用的部分: 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 ()'

StdLibinclr.AddReference("StdLib")是我编译的 IronPython 标准库的 dll 的 clr 导入。
正如你所看到的,如果我从编译的应用程序中调用 IronPython 模块的python_version_tuple函数,它会导致错误。platformfailed to parse CPython sys.version: '2.7.2 ()'

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

4

1 回答 1

1

这与用户创建的引擎的 IronPython 问题有关。基本上,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))'
于 2012-07-13T15:09:08.530 回答