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

Python打包時(shí)包含字庫文件的幾種常見方法

 更新時(shí)間:2025年05月12日 11:22:10   作者:戀戀西風(fēng)  
這篇文章主要給大家介紹了關(guān)于Python打包時(shí)包含字庫文件的幾種常見方法,通過示例講解了基本方法、使用spec文件、批量添加字體文件夾和在代碼中訪問字體文件的注意事項(xiàng),需要的朋友可以參考下

前言

在 Python 打包時(shí),如果你想將字庫文件(如 .ttf、.otf 等字體文件)一起打包成一個(gè)可執(zhí)行文件,有幾種常見的方法,具體取決于你使用的打包工具。

使用 PyInstaller

PyInstaller 是最常用的打包工具之一,以下是包含字庫文件的方法:

1. 基本方法 - 使用 --add-data 參數(shù):

pyinstaller --onefile --add-data="font.ttf;." your_script.py

多個(gè):

pyinstaller --onefile --add-data="font1.ttf:." --add-data="font2.ttf:." --add-data="fonts/font3.otf:fonts/" your_script.py

2. 使用 spec 文件(更推薦的方法):

  • 首先生成 spec 文件:pyi-makespec your_script.py

  • 然后修改 spec 文件,在 a.datas 中添加字體文件:

a = Analysis(
    ['your_script.py'],
    binaries=[],
    datas=[('font.ttf', '.')],  # 添加這行
    ...
)

添加多個(gè)文件

a = Analysis(
    ['your_script.py'],
    binaries=[],
    datas=[
        ('font1.ttf', '.'),
        ('font2.ttf', '.'),
        ('fonts/font3.otf', 'fonts'),  # 保持目錄結(jié)構(gòu)
        ('fonts/font4.ttf', 'fonts'),
    ],
    ...
)

需要在代碼中處理字體路徑:

import os
import sys

def resource_path(relative_path):
    """ 獲取資源的絕對(duì)路徑 """
    if hasattr(sys, '_MEIPASS'):
        return os.path.join(sys._MEIPASS, relative_path)
    return os.path.join(os.path.abspath("."), relative_path)

# 使用示例
font_path = resource_path("font.ttf")

注意事項(xiàng)

  • 確保在代碼中正確引用字體文件路徑(使用上述的 resource_path 方法)

  • 字體文件較大的話,打包后的文件體積會(huì)顯著增加

  • 測(cè)試打包后的程序是否能正確加載字體

  • 考慮字體文件的許可證問題,確保你有權(quán)分發(fā)該字體

選擇哪種方法取決于你的具體需求和使用的打包工具。PyInstaller 通常是跨平臺(tái)打包的最佳選擇。

3. 批量添加字體文件夾

import glob

# 獲取所有字體文件
font_files = glob.glob('fonts/*.ttf') + glob.glob('fonts/*.otf')

a = Analysis(
    ['your_script.py'],
    binaries=[],
    datas=[(font, 'fonts') for font in font_files],
    ...
)

注意事項(xiàng)

  • 保持文件目錄結(jié)構(gòu)一致,特別是在代碼中引用字體時(shí)

  • 檢查字體文件的許可證,確??梢院戏ǚ职l(fā)

  • 大量字體文件會(huì)顯著增加打包后的體積

  • 測(cè)試打包后的程序能否正確找到并加載所有字體

  • 考慮使用相對(duì)路徑而不是絕對(duì)路徑引用字體文件

選擇哪種方法取決于你的項(xiàng)目需求和使用的打包工具。對(duì)于大多數(shù)情況,PyInstaller 的 spec 文件方式提供了最好的靈活性和可維護(hù)性。

4. 使用 spec 文件打包

pyinstaller your_script.spec

5.在代碼中訪問打包后的字體文件

import os
import sys
from pathlib import Path

def resource_path(relative_path):
    """ 獲取打包后資源的絕對(duì)路徑 """
    if hasattr(sys, '_MEIPASS'):
        base_path = Path(sys._MEIPASS)
    else:
        base_path = Path.cwd()
    return str(base_path / relative_path)

# 使用示例
font_path = resource_path('fonts/NotoSans-Regular.ttf')

# 使用字體(以Pillow為例)
from PIL import ImageFont
try:
    font = ImageFont.truetype(font_path, size=12)
except IOError:
    print(f"無法加載字體文件: {font_path}")
    font = ImageFont.load_default()

總結(jié) 

到此這篇關(guān)于Python打包時(shí)包含字庫文件的幾種常見方法的文章就介紹到這了,更多相關(guān)Python打包包含字庫文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python使用自定義user-agent抓取網(wǎng)頁的方法

    python使用自定義user-agent抓取網(wǎng)頁的方法

    這篇文章主要介紹了python使用自定義user-agent抓取網(wǎng)頁的方法,涉及Python使用urllib2模塊操作網(wǎng)頁的技巧,需要的朋友可以參考下
    2015-04-04
  • 使用Python制作一個(gè)數(shù)據(jù)預(yù)處理小工具(多種操作一鍵完成)

    使用Python制作一個(gè)數(shù)據(jù)預(yù)處理小工具(多種操作一鍵完成)

    這篇文章主要介紹了使用Python制作一個(gè)數(shù)據(jù)預(yù)處理小工具(多種操作一鍵完成),本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Python之urlencode和urldecode案例講解

    Python之urlencode和urldecode案例講解

    這篇文章主要介紹了Python之urlencode和urldecode案例講解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • python中實(shí)現(xiàn)將多個(gè)print輸出合成一個(gè)數(shù)組

    python中實(shí)現(xiàn)將多個(gè)print輸出合成一個(gè)數(shù)組

    下面小編就為大家分享一篇python中實(shí)現(xiàn)將多個(gè)print輸出合成一個(gè)數(shù)組,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python求出0~100以內(nèi)的所有素?cái)?shù)

    Python求出0~100以內(nèi)的所有素?cái)?shù)

    質(zhì)數(shù)又稱素?cái)?shù)。一個(gè)大于1的自然數(shù),除了1和它自身外,不能被其他自然數(shù)整除的數(shù)叫做質(zhì)數(shù);否則稱為合數(shù)。下面小編給大家?guī)砹薖ython求出0~100以內(nèi)的所有素?cái)?shù)實(shí)例代碼,需要的朋友參考下
    2018-01-01
  • Python中dilb和face_recognition第三方包安裝失敗的解決

    Python中dilb和face_recognition第三方包安裝失敗的解決

    本文主要介紹了Python中dilb和face_recognition第三方包安裝失敗的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python Tornado批量上傳圖片并顯示功能

    Python Tornado批量上傳圖片并顯示功能

    Tornado龍卷風(fēng)是一個(gè)開源的網(wǎng)絡(luò)服務(wù)器框架,它是基于社交聚合網(wǎng)站FriendFeed的實(shí)時(shí)信息服務(wù)開發(fā)而來的。這篇文章主要介紹了Python Tornado批量上傳圖片并顯示,需要的朋友可以參考下
    2020-03-03
  • pyinstaller打包python3.6和PyQt5中各種錯(cuò)誤的解決方案匯總

    pyinstaller打包python3.6和PyQt5中各種錯(cuò)誤的解決方案匯總

    pyinstaller是打包python很方便的一個(gè)套件,我們可以很輕易地使用他,下面這篇文章主要給大家介紹了關(guān)于pyinstaller打包python3.6和PyQt5中各種錯(cuò)誤解決的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Python數(shù)據(jù)結(jié)構(gòu)之棧、隊(duì)列的實(shí)現(xiàn)代碼分享

    Python數(shù)據(jù)結(jié)構(gòu)之棧、隊(duì)列的實(shí)現(xiàn)代碼分享

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)之棧、隊(duì)列的實(shí)現(xiàn)代碼分享,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • 利用python將pdf輸出為txt的實(shí)例講解

    利用python將pdf輸出為txt的實(shí)例講解

    下面小編就為大家分享一篇利用python將pdf輸出為txt的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04

最新評(píng)論