一、項(xiàng)目場景:
通常情況下,我們在對用戶交付Python腳本的時候,給用戶的是可以直接在windows操作系統(tǒng)下直接運(yùn)行的.exe文件,而源碼.py文件需要我們用python的第三方庫Pyinstaller進(jìn)行打包,從而生成我們希望交付給用戶的.exe文件。在打包的過程中有個重要因素是我們必須要考慮的————即我們希望打包后生成的.exe文件盡可能的小,這樣更便于不同用戶之間的交互和傳輸。為了達(dá)到這個目的,我們就需要一個非常干凈的環(huán)境,在此環(huán)境中只安裝我們項(xiàng)目中需要的Python標(biāo)準(zhǔn)庫和第三方庫,其他不需要的庫就不安裝了。此時,我們就要建立起一個虛擬環(huán)境,在這個虛擬環(huán)境中安裝我們項(xiàng)目所需的庫,這樣再用Pyinstaller打包生成的.exe文件就很小了。但是在打包的過程中,我們經(jīng)常會因?yàn)槭褂玫腁naconda或者M(jìn)iniconda的版本不同,會出現(xiàn)各種不同的bug、warning和Error等。下面我就簡單介紹以下我自己在打包過程中所遇到的一些問題和解決方案。備注:我用的是Anaconda2020.07,PyCharm2022.01。
二、問題描述
1.問題一:
1.1 這個問題出現(xiàn)的環(huán)境版本
(1)虛擬環(huán)境中python版本:python3.8.3
(2)虛擬環(huán)境中pyinstaller版本:pyinstaller5.7.0
1.2 出現(xiàn)的報錯信息如下圖所示:
2.問題二:
2.1 這個問題出現(xiàn)的環(huán)境版本:
(1)虛擬環(huán)境中python版本:python3.6.5
(2)虛擬環(huán)境中pyinstaller版本:pyinstaller4.10.0
2.2 出現(xiàn)的報錯信息如下圖所示:
三、原因分析:
1.問題一原因分析:
1.1 原因一:因?yàn)閟cipy和numpy這兩個庫安裝的有問題
在scipy模塊的下載頁面(網(wǎng)址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy)寫著如下圖所示的信息,說是在安裝scipy之前,需要安裝numpy+mkl模塊
1.2 原因二:因?yàn)锳naconda(Miniconda)版本問題或者操作系統(tǒng)版本問題
如本文開頭所介紹的那樣,我用的是Anaconda2020.07,PyCharm2022.01,操作系統(tǒng)是windows11
2.問題二原因分析:
2.1 原因:因?yàn)閹煳募ysconfig.py中的_get_sysconfigdata_name函數(shù)中的有個參數(shù)沒有設(shè)置
四、解決方案:
1.問題一解決方案:
1.1 原因一解決辦法:
(1)方案:先安裝numpy+mkl模塊,再安裝scipy。很慚愧,我按照這個方法做了一遍
(2)結(jié)果:很慚愧,我按照這個方法做了一遍,并沒有奏效,此方案以失敗告終!#捂臉#
1.2 原因二解決辦法:
(1)方案:我在我同事的筆記本上試了一下,他的沒有任何問題,Anaconda和PyCharm版本和我的一樣,也沒有裝numpy+mkl模塊,唯一的區(qū)別在于,我的筆記本操作系統(tǒng)是windows11,他的是windows10,可能windows11的兼容性還未完善好吧。
(2)結(jié)果:猜測可能與windows操作系統(tǒng)版本有關(guān)系,畢竟在不同操作系統(tǒng)上出現(xiàn)的bug是不一樣的,也可能在另外一個操作系統(tǒng)上沒有bug。#捂臉#
2.問題二解決方案:
2.1 解決辦法:
(1)方案:按下windows+R鍵—>輸入cmd,Enter—>conda activate 虛擬環(huán)境名,進(jìn)入虛擬環(huán)境下—>輸入python,進(jìn)入python交互界面—>輸入import sysconfig,Enter—>輸入print(sysconfig.__file__),Enter—>此時可以查看sysconfig.py的本地路徑—>到這個路徑下找到sysconfig.py,然后找到里面的_get_sysconfigdata_name函數(shù),將其中的check_exists參數(shù)默認(rèn)值設(shè)置為True。即_get_sysconfigdata_name(check_exists=True)。然后保存,再去運(yùn)行打包命令,就可以了。如下圖所示:
文章來源:http://www.zghlxwxcb.cn/news/detail-424618.html
(2)結(jié)果:問題完美解決!文章來源地址http://www.zghlxwxcb.cn/news/detail-424618.html
到了這里,關(guān)于利用Python中的Pyinstaller庫進(jìn)行打包時出現(xiàn)錯誤信息:“ImportError:DLL load failed while importing _iterative:找不到指定的模塊?!暗奈恼戮徒榻B完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!