【问题标题】:Pyinstaller compile to exePyinstaller编译成exe
【发布时间】:2016-06-07 09:37:18
【问题描述】:

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

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

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

6363 WARNING: stderr:   File "c:\python27\lib\site-packages\PyInstaller\depend\a
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:\python27\lib\site-packages\PyInstaller\hooks\pre_safe_import_module\
hook-six.moves.py", line 55, in pre_safe_import_module
6378 WARNING: stderr:   File "c:\python27\lib\site-packages\PyInstaller\hooks\pr
e_safe_import_module\hook-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,但我仍然遇到问题。

【问题讨论】:

  • 您尝试运行的命令、获得的输出、屏幕截图或其他任何内容都会有所帮助。
  • 我猜你有一个你认为是字典的字符串...
  • 很抱歉,我不知道(现在仍然不知道)应该提供什么帮助。
  • python -m PyInstaller face.spec 是我要运行的命令
  • @JoranBeasley py 脚本不使用任何字典,如果我通过 Kivy 运行它,它工作正常,当我尝试通过 PyInstaller 创建 exe 时出现错误。我已经重新安装了 Kivy、PyInstaller,并收集了我能找到的所有信息,但还没有找到解决方法。

标签: python windows pyinstaller


【解决方案1】:

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

pip install --upgrade setuptools

我已经尝试安装六个(在我的情况下,它尚未安装),但由于它似乎正在寻找 _vendor.six 而不仅仅是 six,因此并没有解决它。不知何故,升级 setuptools 解决了它。

【讨论】:

    【解决方案2】:

    我在尝试使用 pyinstaller 将我的脚本编译为 macho 时遇到了类似的错误。我尝试按照其他地方的建议卸载/重新安装六个和 setuptools,但没有效果。我注意到另一个关于 enum 的错误,并尝试通过 pip 卸载 enum34。这样做了。

    pip uninstall enum34
    

    【讨论】:

      【解决方案3】:

      检查事项:

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

        pip install --upgrade setuptools
        
      • 在某些情况下,卸载并重新安装诸如 6、setuptools、pyinstaller 等模块也会有所帮助。

      【讨论】:

        【解决方案4】:

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

        conda uninstall setuptools
        

        然后

        conda install setuptools
        

        【讨论】:

        • 虽然我没有使用conda,所以我不得不手动删除包,但是卸载和安装setuptools是解决方案。
        【解决方案5】:

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

        File "C:\Python27\lib\site-packages\pyinstaller-3.1.1-py2.7.egg\PyInstaller\depend\analysis.py", line 198, in _safe_import_module
          hook_module.pre_safe_import_module(hook_api)
        File "C:\Python27\lib\site-packages\pyinstaller-3.1.1-py2.7.egg\PyInstaller\hooks\pre_safe_import_module\hook-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 可以成功运行。

        希望对你有帮助。

        【讨论】:

        • 我的问题当然与六个有关,但我已经安装了它,但似乎无法修复它,不过还是谢谢! :)
        【解决方案6】:

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

        【讨论】:

          【解决方案7】:

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

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

          这里是源问题link

          【讨论】:

            【解决方案8】:
            pip install --force-reinstall --no-binary :all: pyinstaller
            

            对我有用,但只有在以管理员身份在命令提示符下运行时才可以......(Win10)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-11-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-04-28
              • 2020-12-17
              • 2017-10-05
              • 2022-06-24
              相关资源
              最近更新 更多