Python cx_freeze打包工具处理问题思路及解决办法
以下是在使用cx_freeze过程中遇到的问题及解决办法(Win7) 1.问题描述:运行exe,启动无数个主程序,导致系统无法使用 原因:在程序中使用了multiprocessing的包 解决办法:在主文件if __name__ == "__main__":后,添加multiprocessing.freeze_support(),一定要在添加在最开始处 2. 问题描述:运行后,提示在freeze_support中sys.stdout.flush处异常 原因:使用的PyQT作为界面,没有控制台 解决办法:在调用multiprocessing.freeze_support()前,重定向stdout和stderr,添加:sys.stdout = io.StringIO()和 sys.stderr = io.StringIO() 3.使用shelve模块,IDE下调试可以正常使用,打包后无法使用 原因:shelve 的 open 函数在运行中还会装入其它的数据库管理模块,无从了解还需要哪些额外的包,故在打包时就漏掉了一些必要的模块 解决办法:修改打包脚本,添加如下内容: packages = [] for dbmodule in ['dbhash','gdbm','dbm','dumbdbm']: try: __import__(dbmodule) except ImportError: pass else: # If we found the module,ensure it's copied to the build directory. packages.append(dbmodule) options = { 'build_exe': { 'includes': 'atexit',"packages": packages } } 4.使用inspect.getsourcelines异常OSError: could not get source code 原因:打包后,都是pyc文件,没有源代码,导致动态获取代码失败 解决办法:将包含所需源码的py文件打包到library.zip文件中,在‘build_exe'参数中,增加'zip_includes':['pathsource.py'] 以上给大家分享了Python cx_freeze打包工具处理问题思路及解决办法,希望对大家有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |