py2exe gtk выполняет скрипты из каталога - PullRequest
0 голосов
/ 04 февраля 2011

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

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

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

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

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

1 Ответ

0 голосов
/ 04 февраля 2011

Micheal Foord имеет следующий пример для Встраивание Ironpython из Ironpython

Основные шаги - создать приложение оболочкиДля настоящего легкого графического интерфейса есть EasyWPF .Используйте pyc для компиляции вашего скрипта в исполняемый файл и стандартной библиотеки в DLL.В зависимости от того, нужно ли вам захватывать стандартный вывод из сценариев или передавать в них переменные в информации, все может стать более сложным, как указано в статье.Базовый пример приведен ниже.

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)
...