Pyinstaller打包報(bào)錯(cuò)小結(jié)
問(wèn)題目錄
1.Pyinstaller打包exe文件,執(zhí)行后提示缺失yaml,csv,dll等資源文件。
2.打包后運(yùn)行提示 WARNING: file already exists but should not: C:\Users\ADMINI~1\AppData\Local\Temp_MEI130922\torch_C.cp38-win_amd64.pyd。
3.運(yùn)行exe閃退。
4.(ModuleNotFoundError: No module named 'tensorflow_core.python及FileNotFoundError:No such file or directory)。
5.pyimod04_ctypes.install..PyInstallerImportError: Failed to load dynlib/dll ‘C:\Users\Lenovo\AppData\Local\Temp\_MEI209562\MvCameraControl.dll’. Most likely this dynlib/dll was not found when the application was frozen.
解決方法
問(wèn)題一:
pyinstaller -F main.py
打包后(我是在conda環(huán)境里面打包的,據(jù)說(shuō)打包效果好。當(dāng)然也可以用pycharm里面用Terminal命令行),會(huì)自動(dòng)打包main.py文件引用的所有.py文件(僅限py文件),其他的資源文件需要在生成的main.spec文件中手動(dòng)導(dǎo)入。
a = Analysis( ['open_camera_main.py'], pathex=[], binaries=[], datas=[ **('..\\ultralytics\\yolo\\cfg\\default.yaml', 'ultralytics\\yolo\\cfg'), ('C:\\Program Files (x86)\\Common Files\\MVS\Runtime\\Win64_x64','.'), ('..\\best.pt','.'), ],** hiddenimports=[], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher, noarchive=False, )
例如,datas[]第一個(gè)配置格式 (‘path’ ,‘path’)分別是本地的路徑(可以用絕對(duì)路徑,這點(diǎn)無(wú)所謂)和exe運(yùn)行后的虛擬路徑,‘.’就是將資源文件放在根目錄下,并且本文引用的第二個(gè)data,可以將一個(gè)文件夾全部引用。第三個(gè)是訓(xùn)練好的模型文件。
問(wèn)題二:pyinstaller工具內(nèi)部bug據(jù)說(shuō),解決方法也很簡(jiǎn)單,就是在生成的main.spec文件中復(fù)制以下代碼。(我是提示了兩次,具體我也沒(méi)明白,直接寫(xiě)了兩個(gè)函數(shù)),說(shuō)白了就是跳過(guò)報(bào)錯(cuò)。
for d in a.datas: if 'cp38-win_amd64.pyd' in d[0]: a.datas.remove(d) break for d in a.datas: if 'cp38-win_amd64.pyd' in d[0]: a.datas.remove(d) break
問(wèn)題三:在生成的main.spec文件中將console賦值True,這樣可以在exe運(yùn)行時(shí)查看報(bào)錯(cuò)。(當(dāng)然打包之前也可以直接-c打包,不過(guò)后期偷懶)
exe = EXE( pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], name='main', **debug=True,** 可以debug bootloader_ignore_signals=False, strip=False, **upx=True,** 打包用的 upx_exclude=[], runtime_tmpdir=None, **console=True,** disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, )
問(wèn)題四:打包的時(shí)候會(huì)遇到很多module和包,或者FileNotFoundError:No such file or directory。很暴力的方法就是在生成的dist文件夾下邊將這些資源文件直接復(fù)制進(jìn)去即可。講究一點(diǎn)的話,還是查看本地的環(huán)境是否配置了資源文件。
問(wèn)題五:dll資源我放在data里面,顯示錯(cuò)誤加載,然后我在代碼里面修改了引用語(yǔ)句,解決了
MvCamCtrldll = os.path.join(os.getcwd(), "MvCameraControl.dll")
之前用的:
MvCamCtrldll = WinDLL("MvCameraControl.dll")
Tips:1.據(jù)說(shuō)用conda虛擬環(huán)境打包效果會(huì)更好。
2.還有就是打包之前運(yùn)行 pyinstaller -F main.py 可能會(huì)提示一些錯(cuò)誤,例如a/b/c/路徑下面沒(méi)有**.yaml文件,我們需要這樣打包。
pyinstaller -F main.py --add-data=~/project/config/config.yaml**;**a/b/c/
到此這篇關(guān)于Pyinstaller打包報(bào)錯(cuò)小結(jié)的文章就介紹到這了,更多相關(guān)Pyinstaller打包報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)計(jì)算倒數(shù)的方法
這篇文章主要介紹了python實(shí)現(xiàn)計(jì)算倒數(shù)的方法,涉及Python針對(duì)數(shù)學(xué)運(yùn)算操作的相關(guān)技巧,需要的朋友可以參考下2015-07-07Python利用Bokeh進(jìn)行數(shù)據(jù)可視化的教程分享
Bokeh是Python中的數(shù)據(jù)可視化庫(kù),提供高性能的交互式圖表和繪圖。本文將利用Bokeh繪制一些可視化圖表,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-08-08Python的GUI編程之Pack、Place、Grid的區(qū)別說(shuō)明
這篇文章主要介紹了Python的GUI編程之Pack、Place、Grid的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06jupyter lab的目錄調(diào)整及設(shè)置默認(rèn)瀏覽器為chrome的方法
這篇文章主要介紹了jupyter lab的目錄調(diào)整及設(shè)置默認(rèn)瀏覽器為chrome的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04Django中使用 Closure Table 儲(chǔ)存無(wú)限分級(jí)數(shù)據(jù)
對(duì)于數(shù)據(jù)量大的情況(比如用戶(hù)之間有邀請(qǐng)鏈,有點(diǎn)三級(jí)分銷(xiāo)的意思),就要用到 closure table 的結(jié)構(gòu)來(lái)進(jìn)行存儲(chǔ)。這篇文章主要介紹了Django中使用 Closure Table 儲(chǔ)存無(wú)限分級(jí)數(shù)據(jù),需要的朋友可以參考下2019-06-06Go/Python/Erlang編程語(yǔ)言對(duì)比分析及示例代碼
這篇文章主要介紹了Go/Python/Erlang編程語(yǔ)言對(duì)比分析及示例代碼,本文重點(diǎn)是給大家介紹go語(yǔ)言,從語(yǔ)言對(duì)比分析的角度切入介紹,需要的朋友可以參考下2018-04-04Python3.8如何解決No module named 'numpy&apos
這篇文章主要介紹了Python3.8如何解決No module named 'numpy'報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06