构建 IronPython 2.6 脚本 .exe 时找不到模块 "random

4 投票
1 回答
2920 浏览
提问于 2025-04-15 23:37

我正在使用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 标准库的路径通常是通过以下几种方式来确定的:

  1. 通过 IRONPYTHONPATH 环境变量。
  2. 在与 ipy.exe 同目录下的 lib\site.py 文件中的代码,这段代码会把 Python 标准库的位置添加到路径中。

但是,如果你用 SharpDevelop 生成的 IronPython 可执行文件,它不会自动完成这些初始设置。所以在你导入 random 库之前,你需要添加一些额外的启动代码。以下是几种可以做到的方法:

  1. 直接把 Python 标准库的位置添加到 sys.path 中。

    import sys
    sys.path.append(r'c:\python26\lib')
    
  2. 从 IRONPYTHONPATH 环境变量中获取 Python 标准库的位置。

    from System import Environment
    pythonPath = Environment.GetEnvironmentVariable("IRONPYTHONPATH")
    import sys
    sys.path.append(pythonPath)
    
  3. 从注册表中读取 Python 标准库的位置(HKLM\Software\Python\PythonCore\2.6\PythonPath)。

  4. 从一个和你的应用程序一起打包的配置文件中读取 Python 标准库的位置。

另外一个选择是 把你的应用程序需要的 Python 标准库部分编译成一个或多个 .NET 程序集。这样的话,你的应用程序的最终用户就不需要安装 Python 标准库了。

撰写回答