首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行pyinstaller可执行文件时出错

执行pyinstaller可执行文件时出错
EN

Stack Overflow用户
提问于 2019-05-16 13:45:06
回答 1查看 475关注 0票数 1

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

代码语言:javascript
复制
# -*- 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文件时出现以下错误:

代码语言:javascript
复制
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

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

请帮我解决这个问题!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-16 17:50:35

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

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

代码语言:javascript
复制
# -*- 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')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56161543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档