【问题标题】:Error while executing pyinstaller executable file执行 pyinstaller 可执行文件时出错
【发布时间】:2019-05-16 05:45:05
【问题描述】:

我在--onedir 模式下使用以下规范文件创建了一个 exe 文件。该文件夹在dist 文件夹下成功创建。我可以在 onedir 文件夹ROY 中看到要求。

# -*- mode: python -*-

block_cipher = None


a = Analysis(['C:\\Users\\****\\AppData\\Local\\Programs\\Python\\Python37-32\\final.py'],
             pathex=['C:\\Users\\****'],
             binaries=[('bg.png', 'bg.png')],
             datas=[('C:\\Users\\****\\AppData\\Local\\Programs\\Python\\Python37-32\\Lib\\site-packages', 'ttkthemes')],
             hiddenimports=['ttkthemes'],
             hookspath=[],
             runtime_hooks=[],
             excludes=['scipy'],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          [],
          exclude_binaries=True,
          name='final',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='final')

执行exe文件时出现以下错误:

Traceback (most recent call last):   
File "final.py", line 1043, in <module>   
File "final.py", line 40, in __init__   
File "site-packages\ttkthemes\themed_tk.py", line 43, in __init__   
File "site-packages\ttkthemes\_widget.py", line 72, in __init__   
File "site-packages\ttkthemes\_widget.py", line 78, in _load_themes
_tkinter.TclError: couldn't read file "themes/pkgIndex.tcl": no such file or directory

pkgIndex.tcl 确实存在于themes 文件夹下。我应该在spec 文件中特别对待ttkthems 吗?我应该添加任何钩子吗?

请帮我解决这个问题!

【问题讨论】:

    标签: python tkinter pyinstaller


    【解决方案1】:

    不要导入整个 site-packges 文件夹,而是仅导入 ttkthemes 文件夹。我已经更新了datasbinaries。使用images 将在--onedir 主文件夹(final) 下创建一个名为images 的文件夹,您也可以提供任何其他名称。根据您的代码,它将在final 文件夹内创建一个名为bg.png 的文件夹。

    语法为binaries = [(file_name,destination_folder), (file_name,destination_folder)],您可以根据需要添加任意数量的文件。

    # -*- mode: python -*-
    
    block_cipher = None
    
    
    a = Analysis(['C:\\Users\\****\\AppData\\Local\\Programs\\Python\\Python37-32\\final.py'],
                 pathex=['C:\\Users\\****'],
                 binaries=[('bg.png', 'images')],
                 datas=[('C:\\Users\\****\\AppData\\Local\\Programs\\Python\\Python37-32\\Lib\\site-packages\\ttkthemes', 'ttkthemes')],
                 hiddenimports=['ttkthemes'],
                 hookspath=[],
                 runtime_hooks=[],
                 excludes=['scipy'],
                 win_no_prefer_redirects=False,
                 win_private_assemblies=False,
                 cipher=block_cipher,
                 noarchive=False)
    pyz = PYZ(a.pure, a.zipped_data,
                 cipher=block_cipher)
    exe = EXE(pyz,
              a.scripts,
              [],
              exclude_binaries=True,
              name='final',
              debug=False,
              bootloader_ignore_signals=False,
              strip=False,
              upx=True,
              console=True )
    coll = COLLECT(exe,
                   a.binaries,
                   a.zipfiles,
                   a.datas,
                   strip=False,
                   upx=True,
                   name='final')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 2021-07-12
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多