Ошибка при выполнении исполняемого файла pyinstaller

Я создал исполняемый файл, используя приведенный ниже файл спецификации в режиме --onedir . Папка была успешно создана в папке 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	tkthemes	hemed_tk.py", line 43, in __init__   
File "site-packages	tkthemes\_widget.py", line 72, in __init__   
File "site-packages	tkthemes\_widget.py", line 78, in _load_themes
_tkinter.TclError: couldn't read file "themes/pkgIndex.tcl": no such file or directory

pkgIndex.tcl существует в папке themes . Должен ли я относиться к ttkthems специально в файле spec ? Должен ли я добавить какие-либо крючки?

Пожалуйста, помогите мне решить эту проблему!

Всего 1 ответ


Вместо импорта всей папки site-packges импортируйте только папку ttkthemes . Я обновил datas и binaries . Используя images вы создадите папку с именем images в главной папке --onedir ( final ), вы также можете --onedir любое другое имя. Согласно вашему коду, он создаст папку с именем bg.png внутри final папки.

Синтаксис будет выглядеть так: 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')

Есть идеи?

10000