3

pyinstaller を使用して、 cefpython1アプリケーションを単一の exeにバンドルしようとしています。私は、cefpython1 の例である cefsimple の distrubiton を作成する作業用の仕様ファイルを持っています。

# -*- mode: python -*-

def get_cefpython_path():
    import cefpython1 as cefpython

    path = os.path.dirname(cefpython.__file__)
    return "%s%s" % (path, os.sep)

cefp = get_cefpython_path()

a = Analysis(['cefsimple.py'],
             hiddenimports=["json.decoder", "json.scanner", "json.encoder"])
pyz = PYZ(a.pure)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='cefsimple.exe',
          debug=False,
          strip=None,
          upx=False,
          console=False )
coll = COLLECT(exe,
               a.binaries + [('icudt.dll', '%s/icudt.dll' % cefp, 'BINARY')],
               a.zipfiles,
               a.datas + [('locales/en-US.pak', '%s/locales/en-US.pak' % cefp, 'DATA'), ('cefsimple.html', 'cefsimple.html', 'DATA'), ('icon.ico', 'icon.ico', 'DATA')],
               strip=None,
               upx=False,
               name='cefsimple')

プロジェクト ファイルはGoogle ドライブにあります。setup.py は気にしないでください。pyinstaller の隣で遊んでいた py2exe ビルドが含まれています。これを実行するには、Python 2.7、Win32gui、cefpython1、そしてもちろん pyinstaller パッケージが必要です。私はこれを Win32 バージョンでのみテストしました! 変更があった場合は、開発用の pyinstaller をインストールしてみました。

--onefile 属性を指定して pyinstaller を実行しようとすると、何も変わらないように見えます。pyinstaller は dist の下に配布ディレクトリを作成するだけです。私が使用しているコマンドは次のとおりです。pyinstaller --onefile cefsimple.spec

シンプルな Hello World python ファイルで --onefile をテストしましたが、それで動作します。pyinstaller が単一の exe を作成しない原因は何ですか? ビルドログは何も面白いことを示していませんが、警告ファイルで理解できないことがいくつかあります。たとえば。cefpython1.cefpython という名前のモジュールはありませんが、正しい pyd が dist ディレクトリにコピーされ、アプリケーションは動作しています。

dist / の下に作成されるファイルのリストを次に示します。

4

1 に答える 1