網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
現(xiàn)象:
最近將pyinsatller升級(jí)到最新的Version: 5.0.1版本后(之前一直用的是3.5版本同樣方法未遇到問題,今次更新到最新版本后5.0.1后打包就遇到問題,具體是這中間哪個(gè)版本開始有變化也不清楚了,也不去追究,凡是在新版本中遇到問題就在新版本中解決),詳細(xì)現(xiàn)象及解決辦法如下:
1。 先貼上pyinstaller的官方介紹:點(diǎn)擊跳轉(zhuǎn)
2。使用pyinstaller打包完成后到dist目錄下點(diǎn)擊 .exe程序運(yùn)行時(shí)提示 “no module found”,凡是所有外部加載的模塊全部無(wú)法識(shí)別到,然后單獨(dú)將對(duì)應(yīng)的包放到該dist目錄下再運(yùn)行則問題消失,表明在打包時(shí)未正常對(duì)應(yīng)目錄所依賴的模塊加載進(jìn)去
3。先來(lái)看打包命令,我是使用批處理,跟 .py的主文件(即可運(yù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 -D -w %current_dir%\SmartTools.py -i %current_dir%\icon\Tool.ico
pause
4。pyinstaller打包的時(shí)候會(huì)首先生成一個(gè)spec文件,我們可以手工去修改這個(gè)文件,下次打包指定用這個(gè)文件。它的好處是:里面可以寫更復(fù)雜的選項(xiàng),也可以重復(fù)利用,這個(gè)方法我是在pyinstaller 3.5版本中這么用的,但在pyinstaller5.0.1版本中卻會(huì)每次重新覆蓋掉我所修改的spec文件,導(dǎo)致該pathex每次為空,所以在打包時(shí)就不會(huì)將py文件中所引用的文件加載進(jìn)去進(jìn)行編輯打包,關(guān)于該pathex參數(shù)解釋可以到第一步的官方中去查找,下面我截圖出來(lái)給你們看(明確告訴我們?cè)搮?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。重新運(yùn)行該批處理后再去檢查 spec文件,查看pathex是否已經(jīng)將對(duì)應(yīng)目錄添加上,經(jīng)確認(rèn)該參數(shù)中已經(jīng)有值了,為一個(gè)列表
# -*- 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程序,正常啟動(dòng)未報(bào)任何錯(cuò)誤,到此問題成功解決。
原文鏈接:https://www.cnblogs.com/aziji/p/16254288.html
相關(guān)推薦
- 2022-05-03 Android?Compose自定義TextField實(shí)現(xiàn)自定義的輸入框_Android
- 2022-02-28 ts-node : 無(wú)法加載文件 C:\Users\Dell\AppData\Roaming\npm
- 2022-02-25 image-webpack-loader 報(bào)錯(cuò) Invalid regular expression
- 2022-06-06 微信小程序?qū)崿F(xiàn)滾動(dòng)視圖點(diǎn)擊錨點(diǎn)跳轉(zhuǎn)、點(diǎn)擊左側(cè)分欄時(shí)右側(cè)對(duì)應(yīng)內(nèi)容置頂、左右分欄聯(lián)動(dòng)、setTimeou
- 2022-03-15 Response to preflight request doesn‘t pass access
- 2022-09-26 Linux安裝jdk,安裝tomcat,Linux中發(fā)布項(xiàng)目
- 2023-05-11 SQL?多表聯(lián)合查詢的幾種方式詳解_MsSql
- 2022-08-31 Python?selenium?find_element()示例詳解_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支