cx_Freeze会这样做,但会创建一个具有许多依赖项的文件夹。py2exe现在这样做,使用--bundle files 0选项,只创建一个EXE,这可能是解决问题的最佳方法。
更新:在遇到py2exe无法“查找”的第三方模块后,我已经按照kotlet schabowy下面的建议转移到pyinstaller。两者都有足够的文档和include.exes,您可以使用命令行参数运行它们,但是我还没有编译pyinstaller无法处理的脚本,除非进行调试或从头开始。
下面是一个简单的方便函数,我使用解释器中的默认值构建一个.exe(当然,批处理或类似的方法也可以):import subprocess,os
def exe(pyfile,dest="",creator=r"C:\Python34\Scripts\pyinstaller.exe",ico=r"C:\my icons\favicon.ico",noconsole=False):
insert=""
if dest: insert+='--distpath ""'.format(dest)
else: insert+='--distpath "" '.format(os.path.split(pyfile)[0])
if ico: insert+=' --icon="{}" '.format(ico)
if noconsole: insert+=' --noconsole '
runstring='"{creator}" "{pyfile}" {insert} -F'.format(**locals())
subprocess.check_output(runstring)