py2exe gtk从目录执行脚本

时间:2011-02-04 14:02:40

标签: python windows ironpython py2exe reportlab

您好我正在构建一个简单的应用程序,它将有一个组合框来选择位于名为scripts的目录中的python脚本,以便在数据库上创建报告。我打算使用py2exe来构建程序,以便用户不必安装python和submoduals。

那么如何让程序使用py2exe dist运行这些脚本?

我考虑过使用system('command')并将python.exe从我的安装目录复制到刚运行系统(os.curdir +'python.exe'+ script_to_run)然后python.exe将使用本地副本python.dll和它需要运行的libs只是reportlab和pyobdc

会起作用还是有更好的方法?

(如果那更容易的话,我也不介意在铁腕中建造它)

1 个答案:

答案 0 :(得分:0)

Micheal Foord对Embedding Ironpython from within Ironpython

有以下示例

基本步骤是创建shell应用程序。对于真正的轻量级GUI,有EasyWPF。使用pyc将脚本编译为exe,将标准库编译为DLL。根据您是否需要从脚本中捕获stdout或将信息中的变量传递给它们,事情会变得更复杂,如文章所示。下面列出了一个基本的例子。

import clr
clr.AddReference('IronPython')
clr.AddReference('System')
clr.AddReference('mscorlib')
clr.AddReference('Microsoft.Scripting')
clr.AddReference('MyStandardLib')
#Now you can reference things like 'import lxml as L .....

from IronPython.Hosting import Python
from Microsoft.Scripting import SourceCodeKind

spath = "C:/fred.py"  # Path to script


engine = Python.CreateEngine()
#Now add your assemblies (like the standard library) to the engine
for assembly in clr.References:
    runtime.LoadAssembly(assembly)

source = engine.CreateScriptSourceFromFile(spath, SourceCodeKind.Statements)
mod = engine.CreateScope()
runtime = engine.Runtime

source.Execute(mod)