3

Python 3.2 と Pygame でゲームを作っています。すべてを実行可能ファイルにバンドルすることに成功cx_freezeし、実行されました。罰金。唯一の問題は、フラグを myに渡しても、ゲームがデバッグ モードでコンパイルされることです。-OOsetup.py(実際にprintあるステートメントで 確認しました。)__debug__True

問題は、リリース モードで自動的に無効になるデバッグ機能がゲームにあることです。ゲームのデバッグ機能を配布したくありません。コードから手動で削除する必要もありません。

Mysetup.pyは、簡潔にするためにここでは短縮されていますが、次のとおりです。

from cx_Freeze import setup, Executable

includes     = [<some modules>]
excludes     = [<some unwanted modules>]
include_files = [<game assets>]


build_options = {
                 'append_script_to_exe':True,
                 'bin_excludes':excludes,
                 'compressed':True,
                 'excludes': excludes,
                 'include_files': include_files,
                 'includes': includes,
                 'optimize':2,
                 'packages': ['core', 'game'],
                 }

common_exe_options = {
                      'appendScriptToExe'  : True,
                      'appendScriptToLibrary':True,
                      'compress'           : True,
                      'copyDependentFiles' : True,
                      'excludes'           : excludes,
                      'includes'           : includes, 
                      'script'             : '__init__.py',
                     }

executable = Executable(**common_exe_options)

setup(name='Invasodado',
      version='0.8',
      description='wowza!',
      options = {'build_exe': build_options,
                 'bdist_msi': build_options},
      executables=[executable])

残りのコードと同様に、完全なスクリプトはhttps://github.com/CorundumGames/Invasodado/blob/master/setup.pyにあります。

Ubuntu 12.10 では、python3.2 -OO setup.py build. Windows XP では、C:\Python32\python -OO setup.py build.

どんな助けでも素晴らしいでしょう!

4

1 に答える 1

2

コードをバイトコードにコンパイルするための最適化と、インタープリターを実行するための最適化です。optimizecx_Freeze のオプションを設定すると、生成されるバイトコードが最適化されますが、インタープリターは引き続き__debug__ == True.

組み込みインタープリターのデバッグ フラグを設定する簡単な方法はないようです。PYTHONOPTIMIZE環境変数を無視します。回避策として、次のようなデバッグ フラグを使用できます。

debug = __debug__ and not hasattr(sys, 'frozen')
于 2013-03-11T00:45:22.220 に答える