使用虛擬環(huán)境打包python為exe 文件的方法
使用過anaconda環(huán)境下打包py文件的一點(diǎn)感悟,使用的是pyinstaller+anaconda環(huán)境下打包py文件
打包: pyinstaller -F -w -i logo.ico xxxx.py
-F:強(qiáng)制打包
-w:不帶后臺(tái)命令窗口
-i: 使用logo圖標(biāo)的地址
需要打包的文件
遇到的問題:
1.首先對(duì)于使用anaconda打包py文件是存在問題的;
1)打包出來的exe會(huì)很大,會(huì)打包很多關(guān)聯(lián)庫(kù);
2)而其中的一些關(guān)聯(lián)庫(kù)是沒有用,而導(dǎo)入這些庫(kù)會(huì)拖慢程序運(yùn)行的效率。
解決:使用虛擬環(huán)境進(jìn)行打包
1.使用pipenv
虛擬環(huán)境的應(yīng)用可以用pipenv
安裝pipenv :pip install pipenv
使用pipenv建立虛擬環(huán)境,通過命令行:pipenv install 建立虛擬環(huán)境
;
建立虛擬環(huán)境有主意的是:建立的虛擬環(huán)境是在一個(gè)項(xiàng)目文件下的路徑上建立的
3.建立完成后可以通過pipenv shell 進(jìn)入虛擬環(huán)境
4.進(jìn)入后可以通過pip install 包 對(duì)依賴的第三方庫(kù)包進(jìn)行安裝
pipenv install 包是對(duì)庫(kù)包進(jìn)行配置導(dǎo)入綁定到配置文件pipfile中
最后可以在虛擬環(huán)境中安裝pyinstaller來對(duì)需要打包的文件進(jìn)行打包;
2.使用virtualenv
1.安裝virtualenv :pip install virtualenv
2.在相應(yīng)的項(xiàng)目目錄下面建立虛擬環(huán)境:cmd 中virtualenv+venv
(命名)
virtualenv --no-site-packages --python=2.7 env
--no-site-packages:
默認(rèn)情況下,虛擬環(huán)境會(huì)依賴系統(tǒng)環(huán)境中的site packages,就是說系統(tǒng)中已經(jīng)安裝好的第三方package也會(huì)安裝在虛擬環(huán)境中,如果不想依賴這些package,那么可以加上參數(shù) --no-site-packages建立虛擬環(huán)境
3.激活環(huán)境:項(xiàng)目路徑下;venv\scripts\activate
4.安裝庫(kù)pip install xxxx
批量安裝pip install -r xxx.txt
打包安裝遇到的問題分享:
1.在進(jìn)行打包的時(shí)候遇到報(bào)錯(cuò):
Fatal error: PyInstaller does not include a pre-compiled bootloader for your platform.https://pyinstaller.readthedocs.io/en/stable/bootloader-building.html
查閱資料后發(fā)現(xiàn)可以通過降級(jí)實(shí)現(xiàn),后來我發(fā)現(xiàn)造成這個(gè)問題主要是后臺(tái)的win10防火墻吧我虛擬環(huán)境中的pyinstaller的pyinstaller\PyInstaller\bootloader\Windows-32bit中的runw.exe刪掉了,可以通過原有python庫(kù)中已有的庫(kù)中去復(fù)制粘貼到相應(yīng)的路徑下,防火墻應(yīng)該時(shí)刪掉了某些重要的東西。
但是我發(fā)現(xiàn)后來打包中一旦帶有
2.打包后發(fā)現(xiàn)的一些問題:numpy: No module named ‘numpy.random common'
可以發(fā)現(xiàn)使用numpy下,pandas的下引用的numpy導(dǎo)入失敗,經(jīng)查閱這可能是版本問題造成的
可以先卸載原有的版本pip uninstall numpy
改為安裝pip install numpy==1.16.2
3.distutils not included with latest virtualenv (16.4.0) #4064
打包出來可能會(huì)發(fā)現(xiàn)缺少導(dǎo)入包distutils,因?yàn)閐istutils是內(nèi)置庫(kù),無法pip install 安裝,并且virtualenv16.4以后就不再自帶庫(kù)distutils庫(kù)了。
所以可以通過降低virtualenv解決這個(gè)問題;
總結(jié)
以上所述是小編給大家介紹的使用虛擬環(huán)境打包python為exe 文件的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Python基于遞歸算法實(shí)現(xiàn)的走迷宮問題
這篇文章主要介紹了Python基于遞歸算法實(shí)現(xiàn)的走迷宮問題,結(jié)合迷宮問題簡(jiǎn)單分析了Python遞歸算法的定義與使用技巧,需要的朋友可以參考下2017-08-08Python深度學(xué)習(xí)之Keras模型轉(zhuǎn)換成ONNX模型流程詳解
這篇文章主要介紹了Python深度學(xué)習(xí)之Keras模型轉(zhuǎn)換成ONNX模型流程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09Python中順序表的實(shí)現(xiàn)簡(jiǎn)單代碼分享
這篇文章主要介紹了Python中順序表的實(shí)現(xiàn)簡(jiǎn)單代碼分享,展示了代碼運(yùn)行結(jié)果,然后分享了相關(guān)實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01python獲取當(dāng)前計(jì)算機(jī)cpu數(shù)量的方法
這篇文章主要介紹了python獲取當(dāng)前計(jì)算機(jī)cpu數(shù)量的方法,涉及Python操作計(jì)算機(jī)硬件的技巧,代碼簡(jiǎn)單易懂,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04Numpy創(chuàng)建NumPy矩陣的簡(jiǎn)單實(shí)現(xiàn)
本文主要介紹了Numpy創(chuàng)建NumPy矩陣的簡(jiǎn)單實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02python列表中remove()函數(shù)的使用方法詳解
這篇文章主要給大家介紹了關(guān)于python列表中remove()函數(shù)的使用,以及Python列表的remove方法的注意事項(xiàng),文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12python Boltons庫(kù)實(shí)用功能探索(深度復(fù)制類型檢查重試機(jī)制)
這篇文章主要為大家介紹了python Boltons庫(kù)實(shí)用功能探索包含深度復(fù)制類型檢查重試機(jī)制及數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01