欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

pyinstaller打包程序exe踩過(guò)的坑

 更新時(shí)間:2019年11月19日 11:01:47   作者:peace老師  
這篇文章主要介紹了pyinstaller打包exe踩過(guò)的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

基礎(chǔ)環(huán)境

  • python 2.7.17
  • pyinstaller 3.5

安裝pyinstaller

pip install pyinstaller

坑,大坑,深坑

背景:用pygame寫(xiě)了個(gè)貪吃蛇游戲,要打包成exe
用到了字體文件 C:\Windows\Fonts\simsun.ttc (宋體)

打包過(guò)程中沒(méi)有報(bào)錯(cuò)
打包過(guò)程中的警告可以忽略,這個(gè)警告: WARNING: Hidden import “pygame._view” not found!

運(yùn)行exe的時(shí)候報(bào)NotImplementedError: Can't perform this operation for unregistered loader type
真的是百思不得其姐,為什么會(huì)報(bào)這個(gè)錯(cuò)????
最終確定,是找不到引用的字體文件,需要指定下,添加如下代碼:

def rp(relative_path):
 """ Get absolute path to resource, works for dev and for PyInstaller """
 try:
  # PyInstaller creates a temp folder and stores path in _MEIPASS
  base_path = sys._MEIPASS
 except Exception:
  base_path = os.path.abspath(".")

 return os.path.join(base_path, relative_path)

并且每個(gè)文件都要使用該函數(shù)轉(zhuǎn)換下地址

BASICFONT = pygame.font.Font(rp('C:\Windows\Fonts\simsun.ttc'), 18)
titleFont = pygame.font.Font(rp('C:\Windows\Fonts\simsun.ttc'), 100)
gameOverFont = pygame.font.Font(rp('freesansbold.ttf'), 100)

再次pyinstaller -F xxx.py生成單個(gè)exe后,就可以直接運(yùn)行不會(huì)報(bào)錯(cuò)了

上邊解決了可能是巧合,因?yàn)槊總€(gè)人電腦上都有這個(gè)字體

再來(lái)個(gè)圖片的,其他電腦上就沒(méi)有了
首先,還是那個(gè)函數(shù)需要加到代碼里

def rp(relative_path):
 """ Get absolute path to resource, works for dev and for PyInstaller """
 try:
  # PyInstaller creates a temp folder and stores path in _MEIPASS
  base_path = sys._MEIPASS
 except Exception:
  base_path = os.path.abspath(".")

 return os.path.join(base_path, relative_path)

再者,把src目錄下的background.jpg用上方的函數(shù)轉(zhuǎn)換下地址,同時(shí)打印下地址以觀后效

bgimg = rp(os.path.join('src','background.jpg'))
print(bgimg)

使用 pyi-makespec -F 2048.py命令生成spec文件,修改文件內(nèi)容如下:

指定src目錄打包到exe中,運(yùn)行時(shí)生成的臨時(shí)路徑也叫src

src-src

指定命令打包:pyinstaller -F 2048.spec

把2048.exe挪到另一個(gè)位置,跑一下看看cmd輸出

src路徑

生成的臨時(shí)路徑也叫src,且能找到我們的圖片。

這時(shí)候還是不確定,我們換臺(tái)機(jī)器跑下試試

也是正確的

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論