91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中pyinstaller組件打包命令和異常解析是怎樣的

發布時間:2021-09-24 15:04:36 來源:億速云 閱讀:102 作者:柒染 欄目:開發技術

python中pyinstaller組件打包命令和異常解析是怎樣的,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

項目場景:

Python版本:3.8

因公司業務需求,須開發一套局域網內視頻會議軟件,此次采用Python實現此功能。
程序編寫完并在編譯器實現此功能后,采用pyinstaller組件打包成應用程序

問題描述:

在使用pyinstaller組件打包過程中,著實遇到一些問題,以下列出此次遇到主要的問題:

1.如何打包多個文件?

2.打包完運行后控制臺顯示"找不到指定模塊。mkl_intel_thread.l.dll",圖示如下:

python中pyinstaller組件打包命令和異常解析是怎樣的

3.打包如何排除不需要的組件以減少包的大小?

4.待補充 (≧???≦)?

原因分析:

本次打包組件均由conda install安裝,在編譯器中opencv引用模塊運行項目是沒問題的,只是打包運行就會報Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.l.dll,缺少MKL文件 ,疑惑了一段時間…( @_@; )

解決方案:

首先呢,當然是找百度大神來解決問題啦 (??????)??,尋尋覓覓,無果,但至少讓我理解了一點打包的過程和注意事項,結合過去代碼經驗,這次把Anaconda的opencv、numpy和mkl模塊都給卸了,代碼如下:

conda uninstall opencv
conda uninstall numpy
conda uninstall mkl

然后改成如下:

pip install mkl
pip install numpy
pip install opencv

以上最好按順序安裝,三個組件有相互依賴關系,安裝完發現部署后不再報錯。

在安裝過程中也發現了兩個安裝方式安裝的組件其實不太相同,從包的大小得知,pip install安裝的包應該是比較完整的,所以pyinstaller打包起來不會導致文件丟失。

這里就解決了問題2啦(把最難的先給解決啦~ (  ̄ー ̄)人(^▽^ ))

接下來說明一下如何打包多文件。

首先要打包多文件,先生成一個spec文件,代碼如下:

pyi-makespec app.py

這行代碼會生成一個app.spec文件在當前目錄下。

生成的app.spec的內容如下:

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

#如果要添加打包文件,在這里添加
a = Analysis(['app.py'], #例:['app.py','app1.py','app2.py']
             pathex=['C:\\yourAppDir'], #打包路徑,一般默認為當前文件夾路徑
             binaries=[],
             # 打包靜態資源,這邊為元祖類型
             datas=[], # 例:[('C\\yourAppDir\\images','images'),('C\\yourAppDir\\videos','videos')]
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          #生成的執行文件名
          name='MyAwesomeApp', #生成 MyAwesomeApp.exe
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          #運行時是否顯示控制臺,注意True和False的首字母都要大寫
          console=True)

以下為打包常用命令:

常用:
-i  給應用程序添加圖標
-F	指定打包后只生成一個exe格式的文件
-D	–onedir 創建一個目錄,包含exe文件,但會依賴很多文件(默認選項)
-c	–console, –nowindowed 使用控制臺,無界面(默認)
-w	–windowed, –noconsole 使用窗口,無控制臺
-p  添加搜索路徑

這邊我用的是:

pyinstaller -F app.spec

過了一會兒打包完成后會在當前目錄生成三個文件夾,如下圖所示:

python中pyinstaller組件打包命令和異常解析是怎樣的

_pycache_文件夾緩存你打包的文件。(如果組件有重新安裝,打包時建議刪了再進行打包)

bulid文件夾保存一些關于打包文件的信息。

dist文件保存打包完生成的.exe文件。

以上,問題1結束啦,接下來最后一個問題3咯~ ( ̄▽ ̄)~■干杯□~( ̄▽ ̄)

記得第一次打包的時候,很納悶,為啥寫一點代碼打包起來要100多MB? ㄟ( ▔, ▔ )ㄏ

首先依然百度一下,你就…還是不知道 (ˉ▽ ̄~) 切~~

還是靠自己啦,最后打開編譯器看一下環境,陡然發現環境多了很多不需要的組件。

如果怕麻煩一個一個conda uninstall的話,建議新建一個干凈的python3環境,再安裝自己需要的組件。

(當前Python環境建議新建一個在項目當前目錄下,為當前項目專用環境,初始化只有兩個基本組件,再安裝requirement.txt文件中的組件就可以了)

這樣打包起來你就會發現包小了很多。

終于寫完啦 o(*≧▽≦)ツ┏━┓ 開熏

錦瑟無端五十弦,一弦一柱思華年

python中pyinstaller組件打包命令和異常解析是怎樣的

關于python中pyinstaller組件打包命令和異常解析是怎樣的問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌苏市| 清涧县| 安顺市| 闽侯县| 定南县| 隆尧县| 甘孜县| 望城县| 西藏| 吉首市| 霍林郭勒市| 衡水市| 石屏县| 穆棱市| 青铜峡市| 东明县| 巴塘县| 正定县| 郎溪县| 天门市| 高唐县| 浏阳市| 宜州市| 临夏县| 丹寨县| 赤水市| 资溪县| 井冈山市| 通州市| 讷河市| 治多县| 遵义县| 宝山区| 乌审旗| 玉溪市| 呼伦贝尔市| 台东市| 汤原县| 高陵县| 承德县| 靖宇县|