Pyinstaller compile to exe



我正在尝试将Kivy应用程序编译为Windows exe,但是我不断收到属性错误:属性错误:"str"对象没有属性"items"

我已经编译了其他应用程序,并按照每个 kivy 页面的说明行(完成演示),但是当我尝试对我的应用程序执行相同的操作时,我收到上述错误。 我不知道该去哪里,我已经尝试了几个小时,但我似乎无法取得任何进展。 任何帮助将不胜感激。

编辑:下面是堆栈跟踪的尾部,整个事情很长,所以我粘贴了我认为可能相关的内容,但坦率地说,我在这里有点不深入:)

6363 WARNING: stderr:   File "c:python27libsite-packagesPyInstallerdependa
nalysis.py", line 198, in _safe_import_module
     hook_module.pre_safe_import_module(hook_api)
6375 WARNING: stderr:     hook_module.pre_safe_import_module(hook_api)
   File "c:python27libsite-packagesPyInstallerhookspre_safe_import_module
hook-six.moves.py", line 55, in pre_safe_import_module
6378 WARNING: stderr:   File "c:python27libsite-packagesPyInstallerhookspr
e_safe_import_modulehook-six.moves.py", line 55, in pre_safe_import_module
     for real_module_name, six_module_name in real_to_six_module_name.items():
6388 WARNING: stderr:     for real_module_name, six_module_name in real_to_six_m
odule_name.items():
 AttributeError: 'str' object has no attribute 'items'
6396 WARNING: stderr: AttributeError: 'str' object has no attribute 'items'

我的规格:

# -*- mode: python -*-
from kivy.deps import sdl2, glew
block_cipher = None

a = Analysis(['face.py'],
             pathex=['c:\Users\Home\PycharmProjects\MSICheck\Images'],
             binaries=None,
             datas=None,
             hiddenimports=['sqlite3','kivy.app','six','packaging','packaging.version','packaging.specifiers'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='face',
          debug=True,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,Tree('c:\Users\Home\PycharmProjects\MSICheck\Images\'),
               a.binaries,
               a.zipfiles,
               a.datas,
               *[Tree(p) for p in (sdl2.dep_bins + glew.dep_bins)],
               strip=False,
               upx=True,
               name='face')

编辑:显然这与 Kivy 无关,因为我重写了前端以使用 TKinter,但我仍然遇到问题。

如果您仍然遇到此问题,以下是为我解决的问题:

pip install --upgrade setuptools

我尝试安装六个(就我而言,它还没有安装),但由于它似乎正在寻找_vendor.six而不仅仅是six,这并没有解决它。不知何故,升级安装工具可以解决它。

尝试使用 pyinstaller 将脚本编译为男子气概时,我遇到了类似的错误。我尝试按照其他地方的建议卸载/重新安装六个和设置工具,但没有效果。我注意到另一个关于枚举的错误,并尝试通过 pip 卸载 enum34。这做到了。

pip uninstall enum34

要检查的事项:

  • 检查所述错误上方的输出。有时可能没有安装所需的一些模块。确保已安装所有模块,并且没有先前的错误。
  • 使用命令升级安装工具:

    pip install --upgrade setuptools
    
  • Unistall 和重新安装模块,如六个、设置工具、pyinstaller 在某些情况下也有帮助。

尽管升级了setuptools,但卸载和重新安装对我有用。

conda uninstall setuptools

然后

conda install setuptools

我在使用 pyinstaller 时遇到了一些类似的错误。我的部分错误消息如下所示:

File "C:Python27libsite-packagespyinstaller-3.1.1-py2.7.eggPyInstallerdependanalysis.py", line 198, in _safe_import_module
  hook_module.pre_safe_import_module(hook_api)
File "C:Python27libsite-packagespyinstaller-3.1.1-py2.7.eggPyInstallerhookspre_safe_import_modulehook-six.moves.py", line 55, in pre_safe_import_module
  for real_module_name, six_module_name in real_to_six_module_name.items():
AttributeError: 'str' object has no attribute 'items'

当我向上滚动此消息时,我发现:

18611 INFO: Processing pre-find module path hook   distutils
20032 INFO: Processing pre-safe import module hook   _xmlplus
23532 INFO: Processing pre-safe import module hook   six.moves
Traceback (most recent call last):
  File "<string>", line 2, in <module>
ImportError: No module named six

所以我转而安装模块六。当我安装它时,我的pyinstaller可以成功运行。

希望这能帮助你。

我在 wxPython 项目中从 Pyinstaller 中获得了类似的错误输出。通过升级安装工具(从 38.5.1 到 39.0.2)解决了这个问题。

我已经通过安装一些依赖项解决了这个问题,

pip install --force-reinstall --no-binary :all: pyinstaller

这是源问题链接

pip install --force-reinstall --no-binary :all: pyinstaller

为我做了这个技巧,但只有在以管理员身份将其运行到命令提示符下时......(Win10)

最新更新