我正在用Python3.2和Pygame制作一个游戏。我已经成功地使用cx_freeze
将所有东西打包到一个可执行文件中,并且它运行。很好。唯一的问题是,即使我把-OO
setup.py
**,的标志传递给,游戏也是在调试模式下编译的。**(我用print
语句确认了__debug__
确实是True
)。
问题是,我的游戏有调试功能,是自动禁用在发布模式。我不想分发我的游戏的调试功能,我也不想把它们从代码中手动删除。
为了简洁起见,我的setup.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上找到。
在Ubuntu12.10上,我正在使用python3.2 -OO setup.py build
构建。在Windows上,我正在使用C:\Python32\python -OO setup.py build
进行构建。
任何帮助都是很棒的!
发布于 2013-03-11 00:45:22
有两件稍微不同的事情:编译代码为字节码的优化和解释器运行的优化。在用于optimize
的选项中设置cx_Freeze可以优化它生成的字节码,但是解释器仍然使用__debug__ == True
运行。
似乎没有一种为嵌入式解释器设置调试标志的简单方法。它忽略PYTHONOPTIMIZE
环境变量。作为解决办法,您可以使用以下调试标志:
debug = __debug__ and not hasattr(sys, 'frozen')
https://stackoverflow.com/questions/15317231
复制相似问题