0

こんにちは私は、データベースにレポートを作成するためのスクリプトと呼ばれるディレクトリにあるPythonスクリプトを選択するためのコンボボックスを備えたシンプルなアプリケーションを構築しています。py2exeを使用してプログラムをビルドし、ユーザーがpythonやサブモジュールをインストールする必要がないようにしました。

では、py2exe distを使用してプログラムにこれらのスクリプトを実行させるにはどうすればよいですか?

system('command')を使用し、インストールディレクトリからpython.exeをコピーしてsystem(os.curdir +'python.exe' + script_to_run)を実行することを考えました。その後、python.exeはpythonのローカルコピーを使用します。 dllとそれが実行する必要のあるlibsはreportlabとpyobdcです

それはうまくいくでしょうか、それとももっと良い方法がありますか?

(それが簡単であれば、ironpythonでビルドしてもかまいません)

4

1 に答える 1

0

Micheal Foordには、Ironpython内からIronpythonを埋め込むための次の例があります

基本的な手順は、シェルアプリケーションを作成することです。実際の軽量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)
于 2011-02-04T17:58:01.257 に答える