【问题标题】:deploying IronPython script or static building an application部署 IronPython 脚本或静态构建应用程序
【发布时间】:2023-08-30 08:34:01
【问题描述】:

我创建了一个 IronPython 脚本,它从 Python 库(例如 ossys 等)以及 .NET 库中导入。

它在我的 Visual Studio IronPython 解决方案中运行得非常好,但我需要部署它,以便其他没有安装 IronPython 或 Python 的人可以运行它。

我该怎么做?

【问题讨论】:

    标签: .net python windows ironpython ironpython-studio


    【解决方案1】:

    要求:

    • ipy.exe in C:\Program Files (x86)\IronPython 2.7.1\
    • pyc.py in C:\Program Files (x86)\IronPython 2.7.1\Tools\Scripts\
    • MyProgram.py 将是你的程序。

      1. 在您的项目文件夹(MyProgram.py 所在的位置)中,创建一个名为“deploy”的文件夹。
      2. 在命令提示符下运行cd deploy
      3. 运行"C:\Program Files (x86)\IronPython 2.7.1\ipy.exe" "C:\Program Files (x86)\IronPython 2.7.1\Tools\Scripts\pyc.py" /main:..\MyProgram.py /target:exe

    这将在deploy 文件夹中为 MyProgram 生成一个 dll 和一个 exe。

    如果您尝试运行 MyProgram.exe 并导入像 os 这样的库,您可能会得到一个 No module named ...

    因为我使用的是os,所以我收到了这个错误:

    如果您运行“MyProgram.exe”并使用标准库,您可能会收到No module named... 错误。

    就我而言,我得到了:

    未处理的异常:IronPython.Runtime.Exceptions.ImportException:没有名为 os 的模块
    ...

    要解决此问题,请将 Lib 文件夹从 C:\Program Files (x86)\IronPython 2.7.1\ 复制到您刚刚创建的 deploy 文件夹中。然后,在导入引发错误的库之前,修改 MyProgram.py 如下:

    import sys
    sys.path.append("Lib")
    
    # Followed by library imports that were causing you trouble:
    import os
    

    最后一步,将以下文件从C:\Program Files (x86)\IronPython 2.7.1\ 复制到deploy 文件夹:

    -IronPython.dll
    -IronPython.Modules.dll
    -Microsoft.Dynamic.dll
    -Microsoft.Scripting.dll

    现在您可以压缩您的 deploy 文件夹并发送它!

    【讨论】: