python带库打包Python打包时包含字库文件的几种常见方法python

目录
  • 前言
  • 使用 PyInstaller
    • 1.基本技巧&8211; 使用&8211;add-data参数:
    • 2. 使用 spec 文件(更推荐的技巧):
      • 需要在代码中处理字体路径:
      • 注意事项
    • 3. 批量添加字体文件夹
      • 注意事项
    • 4. 使用 spec 文件打包
      • 5.在代码中访问打包后的字体文件
      • 拓展资料

        前言

        在 Python 打包时,如果你想将字库文件(如 .ttf、.otf 等字体文件)一起打包成一个可执行文件,有几种常见的技巧,具体取决于你使用的打包工具。

        使用 PyInstaller

        PyInstaller 是最常用的打包工具其中一个,下面内容是包含字库文件的技巧:

        1.基本技巧&8211; 使用&8211;add-data参数:

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

        多个:

        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’, ‘.’)], 添加这行 …)

        添加多个文件

        a = Analysis( [‘your_script.py’], binaries=[], datas=[ (‘font1.ttf’, ‘.’), (‘font2.ttf’, ‘.’), (‘fonts/font3.otf’, ‘fonts’), 保持目录结构 (‘fonts/font4.ttf’, ‘fonts’), ], …)

        需要在代码中处理字体路径:

        import osimport sysdef resource_path(relative_path): “”” 获取资源的完全路径 “”” 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”)

        注意事项

        • 确保在代码中正确引用字体文件路径(使用上述的resource_path技巧)

        • 字体文件较大的话,打包后的文件体积会显著增加

        • 测试打包后的程序是否能正确加载字体

        • 考虑字体文件的许可证难题,确保你有权分发该字体

        选择哪种技巧取决于你的具体需求和使用的打包工具。PyInstaller 通常是跨平台打包的最佳选择。

        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], …)

        注意事项

        • 保持文件目录结构一致,特别是在代码中引用字体时

        • 检查字体文件的许可证,确保可以合法分发

        • 大量字体文件会显著增加打包后的体积

        • 测试打包后的程序能否正确找到并加载所有字体

        • 考虑使用相对路径而不是完全路径引用字体文件

        选择哪种技巧取决于你的项目需求和使用的打包工具。对于大多数情况,PyInstaller 的 spec 文件方式提供了最好的灵活性和可维护性。

        4. 使用 spec 文件打包

        pyinstaller your_script.spec

        5.在代码中访问打包后的字体文件

        import osimport sysfrom pathlib import Pathdef resource_path(relative_path): “”” 获取打包后资源的完全路径 “”” 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 ImageFonttry: font = ImageFont.truetype(font_path, size=12)except IOError: print(f”无法加载字体文件: font_path}”) font = ImageFont.load_default()

        拓展资料

        到此这篇关于Python打包时包含字库文件的几种常见技巧的文章就介绍到这了,更多相关Python打包包含字库文件内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

        无论兄弟们可能感兴趣的文章:

        • Python将字库文件打包成可执行文件的常见技巧
        版权声明

        为您推荐