2011-02-04 2 views
0

Привет Я создаю простое приложение, которое будет иметь поле со списком, чтобы выбрать скрипты python, которые находятся в каталоге под названием scripts для создания отчетов в базе данных. Я собирался использовать py2exe для сборки программы, чтобы пользователи не должны были устанавливать python и подмодули.py2exe gtk выполнить скрипты из каталога

, так как же я хочу, чтобы программа запускала эти скрипты с помощью py2exe dist?

Я подумал об использовании системы ('command') и скопировал python.exe из моей установочной директории, чтобы просто запустить систему (os.curdir + 'python.exe' + script_to_run), тогда python.exe будет использовать локальную копию из python.dll и libs, которые ему нужно запустить, которые будут только reportlab и pyobdc

будет работать или есть лучший способ?

(я тоже был бы не против строить его в IronPython, если это будет проще)

ответ

0

Мичил Фурд имеет следующий пример Embedding Ironpython from within Ironpython

Основные шаги для создания приложения оболочки. Для реального облегченного графического интерфейса есть 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) 
Смежные вопросы