2012-01-17 11 views
4

私はPyInstallerを使用して、2つのスクリプトを1つの実行可能ファイルに変換します。私がいる問題は、私は2つのスクリプトをバンドルする方法を見つけ出すと、まだ彼らは互いを参照任せることはできないです。PyInstallerでの複数のスクリプトのパッケージ化

問題の原因となるコードは1つのスクリプトは、script1.pyが含まれていることをされています

subprocess.call(['gksudo','python script2.py']) 

これは正常にスクリプトを実行するとうまくいきますが、PyInstallerにパッケージされていれば、通話の仕方は分かりません。

答えて

1

私はpyinstallerがこの種のバンドルを自分で扱うことはできないと考えていますが、少なくとも可能ならばそれを設定することはできませんでした。また、私はsubprocess.Popen( 'Pythonの...)

にいくつかの呼び出しが行われ、むしろ大規模なアプリケーションを持っています。私は最終的にそれが仕事作っ道ました:

  1. subprocess.call(['gksudo','./python script2.py'])のように、異なるのpythonにあなたのサブプロセスの呼び出しを変更します。あなたのケースでは、2つの別々の分析、エントリーポイントの一つであり、スクリプトの残りの部分のための1つを作成します。

    A1 - script1.py A2の分析 - script2.pyの分析

  2. の作成唯一のエントリポイントスクリプトからexeファイル:

  3. pyz = PYZ(a1.pure) 
    exe = EXE(pyz, 
        a1.scripts, 
        exclude_binaries=1, 
        name={name here}, 
        debug=False, 
        strip=False, 
        upx=True, 
        console=1) 
    
    は、すべてのスクリプトから収集

    coll = COLLECT(exe, 
         a1.binaries, 
         a1.zipfiles, 
         a1.datas, 
         a2.binaries, 
         a2.zipfiles, 
         a2.datas, 
        python_tree, 
         *additional_trees, 
         strip=False, 
         upx=True, 
         name={}) 
    
  4. pyinstallerで見つからなかった追加の要件を持つすべてのサブプロセス呼び出しで指定された場所にpythonをコピーします(matplotlib、pylabなどがありました)

  5. 最初に変更する起動スクリプトを作成します。あなたのパッケージを指し示してからアプリを起動するために必要な環境変数。私はどちらかが何のPythonがインストールされていない持っていた、あるいは彼らが持っている場合はPythonがインストールマシン上で実行するアプリケーションを望んでいた場合は、これらの全てが必要となった今、

    export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH 
    export LD_RUN_PATH=`pwd`:$LD_RUN_PATH 
    

:呼び出したディレクトリから、私の場合には、何が必要だったのでした、アプリケーションがローカルライブラリの代わりに配布パッケージのすべてのライブラリを使用していることを確認してください。あなたのケースでは、Pythonが既にターゲットマシンにインストールされている場合は、このようなことは必要ではないと思われ、最初の3ステップで十分です。

関連する問題