大家好, 第一次问这里,通常我需要的东西已经在这里得到了回答,但是这个真的很烦我,我找不到答案还
我正在使用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的标准库以与我的应用程序一起分发它们? 谢谢你的帮助! :)
答案 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))'