构建 IronPython 2.6 脚本 .exe 时找不到模块 "random
我正在使用SharpDevelop把我的IronPython脚本打包成一个可执行文件(exe)。唯一的问题是,我的脚本里有一行代码:
import random
这行代码在我通过ipy.exe运行脚本时没有问题,但当我试图在SharpDevelop中从这个脚本构建并运行exe时,总是出现这样的提示:
IronPython.Runtime.Exceptions.ImportException: No module named random
为什么SharpDevelop看不到random这个模块呢?我该怎么让它识别到呢?
1 个回答
3
当你用 ipy.exe 运行一个 IronPython 脚本时,Python 标准库的路径通常是通过以下几种方式来确定的:
- 通过 IRONPYTHONPATH 环境变量。
- 在与 ipy.exe 同目录下的 lib\site.py 文件中的代码,这段代码会把 Python 标准库的位置添加到路径中。
但是,如果你用 SharpDevelop 生成的 IronPython 可执行文件,它不会自动完成这些初始设置。所以在你导入 random 库之前,你需要添加一些额外的启动代码。以下是几种可以做到的方法:
直接把 Python 标准库的位置添加到 sys.path 中。
import sys sys.path.append(r'c:\python26\lib')
从 IRONPYTHONPATH 环境变量中获取 Python 标准库的位置。
from System import Environment pythonPath = Environment.GetEnvironmentVariable("IRONPYTHONPATH") import sys sys.path.append(pythonPath)
从注册表中读取 Python 标准库的位置(HKLM\Software\Python\PythonCore\2.6\PythonPath)。
从一个和你的应用程序一起打包的配置文件中读取 Python 标准库的位置。
另外一个选择是 把你的应用程序需要的 Python 标准库部分编译成一个或多个 .NET 程序集。这样的话,你的应用程序的最终用户就不需要安装 Python 标准库了。