亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 TrueType 字體文件添加到 pyinstaller 可執行文件以用于 Pygame?

如何將 TrueType 字體文件添加到 pyinstaller 可執行文件以用于 Pygame?

蠱毒傳說 2023-06-20 15:19:50
我創建了一個名為 breakout.py 的 python 文件,并想用 pyinstaller 創建一個 exe。python 文件需要與 python 腳本位于同一目錄中的文件 ARCADECLASSIC.TTF 才能運行。此外,我希望能夠運行 exe 文件而不必同時擁有字體文件。我嘗試了多個 pyinstaller 命令來嘗試執行此操作。我嘗試了這個命令pyinstaller --add-binary "ARCADECLASSIC.TTF;." --onefile breakout.py并收到了權限被拒絕的錯誤號 13。然后我嘗試編輯我的代碼,使字體文件位于一個名為 fonts 的目錄中,并嘗試運行此命令但pyinstaller --add-binary "fonts/ARCADECLASSIC.TTF;fonts" --onefile breakout.py沒有錯誤,但是當我運行 exe 文件時出現錯誤,說沒有名為 fonts/ARCADECLASSIC.TTF 的文件所以崩潰了.我現在也嘗試指定字體文件的完整目錄,但它仍然不起作用。如果這有助于我的操作系統是 Windows,我正在使用 python 3.8.5 64 位和 pyinstaller 4.0。首先是我正在嘗試做的事情,其次是如果可能的話我該怎么做以及我做錯了什么。
查看完整描述

1 回答

?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

您將需要創建一個 .spec 文件并提及您要在其中包含的內容,例如字體或其他圖像。


# -*- mode: python -*-


block_cipher = None



a = Analysis(['your python file.py'],

             pathex=['C:\\path\\to\\directory'], # just the directory not the file

             binaries=[],

             datas=[],

             hiddenimports=[],

             hookspath=[],

             runtime_hooks=[],

             excludes=[],

             win_no_prefer_redirects=False,

             win_private_assemblies=False,

             cipher=block_cipher)


a.datas += [('ttf file','path\\to\\ttf\\file', "DATA")]


pyz = PYZ(a.pure, a.zipped_data,

         cipher=block_cipher)


exe = EXE(pyz,

      a.scripts,

      a.binaries,

      a.zipfiles,

      a.datas,

      name='Your App Name',

      debug=False,

      strip=False,

      upx=True,

      console=False # set True if command prompt window needed

)

在游戲所在的實際 python 文件中包含此內容。


def resource_path(relative_path):

    try:

        base_path = sys._MEIPASS

    except Exception:

        base_path = os.path.abspath(".")


    return os.path.join(base_path, relative_path)

每當您想加載字體時,都可以這樣做。


font = pygame.font.Font(resource_path("Font.ttf"), size)

在你的主 python 文件中有了它之后,在你的終端中輸入你創建的規范文件。


pyinstaller yourspecfile.spec

這將創建您的可執行文件,它應該自己工作。


這是我以前項目中的規范文件的樣子 # - - mode: python - -


block_cipher = None



a = Analysis(['lol.py'],

         pathex=['C:\\games\\snake'],

         binaries=[],

         datas=[],

         hiddenimports=[],

         hookspath=[],

         runtime_hooks=[],

         excludes=[],

         win_no_prefer_redirects=False,

         win_private_assemblies=False,

         cipher=block_cipher)


a.datas += [('8min.ttf','C:\\games\\snake\\8min.ttf', "DATA")]


pyz = PYZ(a.pure, a.zipped_data,

         cipher=block_cipher)


exe = EXE(pyz,

      a.scripts,

      a.binaries,

      a.zipfiles,

      a.datas,

      name='Snake',

      debug=False,

      strip=False,

      upx=True,

      console=False)


查看完整回答
反對 回復 2023-06-20
  • 1 回答
  • 0 關注
  • 237 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號