您好我正在构建一个简单的应用程序,它将有一个组合框来选择位于名为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
会起作用还是有更好的方法?
(如果那更容易的话,我也不介意在铁腕中建造它)
答案 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)