pyinstaller?pathex參數(shù)引發(fā)打包no?module?name異常
現(xiàn)象:
最近將pyinsatller升級到最新的Version: 5.0.1版本后(之前一直用的是3.5版本同樣方法未遇到問題,今次更新到最新版本后5.0.1后打包就遇到問題,具體是這中間哪個版本開始有變化也不清楚了,也不去追究,凡是在新版本中遇到問題就在新版本中解決),詳細(xì)現(xiàn)象及解決辦法如下:
1。 先貼上pyinstaller的官方介紹:點擊跳轉(zhuǎn)
2。使用pyinstaller打包完成后到dist目錄下點擊 .exe程序運行時提示 “no module found”,凡是所有外部加載的模塊全部無法識別到,然后單獨將對應(yīng)的包放到該dist目錄下再運行則問題消失,表明在打包時未正常對應(yīng)目錄所依賴的模塊加載進(jìn)去

3。先來看打包命令,我是使用批處理,跟 .py的主文件(即可運行主窗口文件)在同一目錄
@echo off echo Current Dish:%~d0 echo Current Dish and Path:%~dp0 echo Current CMD default Dir:"%cd%" set "current_dir=%~dp0" echo %current_dir% set "output_dir=%current_dir%" cd %output_dir% ;echo "%cd%" pyinstaller.exe -D -w %current_dir%\SmartTools.py -i %current_dir%\icon\Tool.ico pause
4。pyinstaller打包的時候會首先生成一個spec文件,我們可以手工去修改這個文件,下次打包指定用這個文件。它的好處是:里面可以寫更復(fù)雜的選項,也可以重復(fù)利用,這個方法我是在pyinstaller 3.5版本中這么用的,但在pyinstaller5.0.1版本中卻會每次重新覆蓋掉我所修改的spec文件,導(dǎo)致該pathex每次為空,所以在打包時就不會將py文件中所引用的文件加載進(jìn)去進(jìn)行編輯打包,關(guān)于該pathex參數(shù)解釋可以到第一步的官方中去查找,下面我截圖出來給你們看(明確告訴我們該參數(shù)主要就是文件中關(guān)于imports導(dǎo)模塊所需路徑)

5。那到這里就已經(jīng)知道問題出在哪里了,但要如何處理才能將spec文件中的pathex中帶上當(dāng)前地址呢,上面也已經(jīng)給出的明確的答案,就是在pyinstaller后面帶上 --paths參數(shù),現(xiàn)修改編輯打包文件如下(紅色字體為新增部分):
@echo off echo Current Dish:%~d0 echo Current Dish and Path:%~dp0 echo Current CMD default Dir:"%cd%" set "current_dir=%~dp0" echo %current_dir% set "output_dir=%current_dir%" cd %output_dir% ;echo "%cd%" pyinstaller.exe --paths %current_dir% -D -w %current_dir%\SmartTools.py -i %current_dir%\icon\Tool.ico pause
6。重新運行該批處理后再去檢查 spec文件,查看pathex是否已經(jīng)將對應(yīng)目錄添加上,經(jīng)確認(rèn)該參數(shù)中已經(jīng)有值了,為一個列表
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(
['E:\\SmartTools\\\\SmartTools.py'],
pathex=['E:\\SmartTools\\'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)7。 重新到dist目錄下去執(zhí)行 .exe程序,正常啟動未報任何錯誤,到此問題成功解決。
以上就是pyinstaller pathex參數(shù)引發(fā)打包no module name異常的詳細(xì)內(nèi)容,更多關(guān)于pyinstaller打包異常的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
django中的select_related和prefetch_related性能優(yōu)化分析
這篇文章主要介紹了django中的select_related和prefetch_related性能優(yōu)化分析,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
Python如何解決secure_filename對中文不支持問題
最近使用到了secure_filename,然后悲劇的發(fā)現(xiàn)中文居然不展示出來,本文就詳細(xì)的介紹一下解決方法,感興趣的可以了解一下2021-07-07
Python調(diào)用百度AI實現(xiàn)圖片上表格識別功能
這篇文章主要給大家介紹了關(guān)于Python調(diào)用百度AI實現(xiàn)圖片上表格識別功能的相關(guān)資料,在Python環(huán)境下,利用百度AI開放平臺文字識別技術(shù),對表格類圖片進(jìn)行識別,需要的朋友可以參考下2021-09-09
Python編譯為二進(jìn)制so可執(zhí)行文件實例
今天小編就為大家分享一篇Python編譯為二進(jìn)制so可執(zhí)行文件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12

