Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pyinstaller compile to exe

I am trying to compile a Kivy application to a windows exe, but I keep receiving an attribute error: AttributeError: 'str' object has no attribute 'items'

I have compiled other applications, and followed the instructions line for line per the kivy page (completing the demo), but when I try to do the same to my application I receive the above error. I'm not sure where to go I've been trying for several hours now and I can't seem to make any headway. Any help would be greatly appreciated.

Edit: Below is the tail of the stack trace, the whole thing is long and so I pasted in what I think may be relevant, but frankly I'm a bit out of my depth here :)

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'

My Spec:

# -*- 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')

EDIT: Apparently it has nothing to do with Kivy as I have rewritten the front end to use TKinter and i'm still having the issue.

like image 975
Tbaker Avatar asked Feb 24 '16 21:02

Tbaker


People also ask

Can Python script be convert to exe?

Using Python cx_Freeze for py2exe Similar to how pyinstaller and auto-py-to-exe work, cx_Freeze is a collection of scripts and modules for turning Python scripts into executables.

Does PyInstaller compile Python?

The bundled app does not include any source code. However, PyInstaller bundles compiled Python scripts ( . pyc files).


1 Answers

If you are still having this issue, here is what solved it for me:

pip install --upgrade setuptools

I've tried installing six (in my case, it wasn't already installed), but since it seems that it is looking for _vendor.six and not just six, that didn't solve it. Somehow, upgrading setuptools solves it.

like image 83
noname Avatar answered Sep 20 '22 19:09

noname