Python cx_freeze打包工具處理問題思路及解決辦法
以下是在使用cx_freeze過程中遇到的問題及解決辦法(Win7)
1.問題描述:運行exe,啟動無數(shù)個主程序,導致系統(tǒng)無法使用
原因:在程序中使用了multiprocessing的包
解決辦法:在主文件if __name__ == "__main__":后,添加multiprocessing.freeze_support(),一定要在添加在最開始處
2. 問題描述:運行后,提示在freeze_support中sys.stdout.flush處異常
原因:使用的PyQT作為界面,沒有控制臺
解決辦法:在調(diào)用multiprocessing.freeze_support()前,重定向stdout和stderr,添加:sys.stdout = io.StringIO()和 sys.stderr = io.StringIO()
3.使用shelve模塊,IDE下調(diào)試可以正常使用,打包后無法使用
原因:shelve 的 open 函數(shù)在運行中還會裝入其它的數(shù)據(jù)庫管理模塊,無從了解還需要哪些額外的包,故在打包時就漏掉了一些必要的模塊
解決辦法:修改打包腳本,添加如下內(nèi)容:
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文件,沒有源代碼,導致動態(tài)獲取代碼失敗
解決辦法:將包含所需源碼的py文件打包到library.zip文件中,在‘build_exe'參數(shù)中,增加'zip_includes':['path\\source.py']
以上給大家分享了Python cx_freeze打包工具處理問題思路及解決辦法,希望對大家有所幫助。
相關文章
Python使用Matplotlib模塊的pie()函數(shù)實現(xiàn)繪制餅形圖
這篇文章主要為大家詳細介紹了 Python 如何使用 Matplotlib 模塊的pie()函數(shù)繪制餅形圖,文中有詳細的代碼講解,對大家學習或工作有一定的幫助,感興趣的可以了解一下2023-11-11基于selenium及python實現(xiàn)下拉選項定位select
這篇文章主要介紹了基于selenium及python實現(xiàn)下拉選項定位select,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-07-07Django model 中設置聯(lián)合約束和聯(lián)合索引的方法
今天小編就為大家分享一篇Django model 中設置聯(lián)合約束和聯(lián)合索引的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08Appium+Python自動化環(huán)境搭建實例教程
這篇文章主要介紹了Appium+Python自動化環(huán)境搭建實例教程,本文通過實例代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08