Python 3.7: ошибка при создании исполняемого файла с помощью pyinstaller - PullRequest
0 голосов
/ 03 июня 2019

Ниже приведен файл python run.py моего графического интерфейса, который я хочу преобразовать в исполняемый файл:

# -*- coding: utf-8 -*-
import PySimpleGUIQt as sg
import parse2

layout = [               
    [sg.Checkbox('Module Selection', default=False, change_submits = True, key='_checkbox_' )],
    [sg.Text('A2L File', size=(13,0.5), auto_size_text=True, justification='right'),      
     sg.InputText('',key='_a2l_'), sg.FileBrowse(file_types=(("A2L File", "*.a2l"),), auto_size_button=False)],
    [sg.Text('Signals Lexicon', size=(13,0.5), auto_size_text=True, justification='right', key='_sigLextext_'),      
     sg.InputText('',key='_sigLex_'), sg.FileBrowse(file_types=(("Excel File", "*.xlsx"),),key='_sigLexbutton_', auto_size_button=False)],
    [sg.Text('Parameters Lexicon', size=(13,0.5), auto_size_text=True, justification='right', key='_parLextext_'),      
     sg.InputText('',key='_parLex_'), sg.FileBrowse(file_types=(("Excel File", "*.xlsx"),),key='_parLexbutton_', auto_size_button=False)],
    [sg.Text('Module', size=(13,0.5), auto_size_text=True, justification='right',key='_moduletext_'),      
     sg.InputText('',key='_module_'), sg.FileBrowse(key='_modulebutton_', auto_size_button=False)],
    [sg.Text('Save Reports at', size=(13,0.5), auto_size_text=True, justification='right'),      
     sg.InputText('',key='_reports_'), sg.FolderBrowse(auto_size_button=False)],            
    [sg.Submit(auto_size_button=False)],
    [sg.Output(size=(540 , 340))]  
]


window = sg.Window('A2L Parser', icon=u'C:\\Users\\anubhav.jhalani\\Documents\\A2L Parser\\A2L parser_09_05\\A2L parser\\index.ico').Layout(layout).Finalize()
values_dict={}

while True:  # Event Loop
    window.Enable()            
    button, values_dict = window.Read()    

    if button is None:
        break
    elif button=='Submit' and (not any(value == '' for value in values_dict.values())):   
        parse2.parser(values_dict['_a2l_'], values_dict['_sigLex_'], values_dict['_parLex_'], values_dict['_module_'],  values_dict['_reports_'], values_dict['_checkbox_'], window)        
    elif button=='Submit' and (any(value == '' for value in values_dict.values())):
        window.Disable()
        sg.Popup("Please select files", no_titlebar=True, keep_on_top=True)


window.Close()

Я использовал приведенную ниже команду, чтобы превратить мой файл в файл .exe:

C:\Python37\Scripts\pyinstaller --noconsole --icon=index.ico --onedir run.py    

Но я получаю ошибку ниже:

15189 INFO: Processing pre-safe import module hook   setuptools.extern.six.moves
Traceback (most recent call last):
  File "c:\program files\python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\program files\python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python37\Scripts\pyinstaller.exe\__main__.py", line 9, in <module>
  File "c:\program files\python37\lib\site-packages\PyInstaller\__main__.py", line 111, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "c:\program files\python37\lib\site-packages\PyInstaller\__main__.py", line 63, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "c:\program files\python37\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1422, in import_hook
    target_module = self._load_tail(target_package, target_module_partname)
 .
 .
 .
 .
  File "c:\program files\python37\lib\site-packages\PyInstaller\lib\modulegraph\modulegraph.py", line 1635, in _load_tail
    submodule = self._safe_import_module(head, mname, submodule)
  File "c:\program files\python37\lib\site-packages\PyInstaller\depend\analysis.py", line 260, in _safe_import_module
    hook_module.pre_safe_import_module(hook_api)
  File "c:\program files\python37\lib\site-packages\PyInstaller\hooks\pre_safe_import_module\hook-setuptools.extern.six.moves.py", line 34, 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'

Я пытался обновить setuptools, как предлагалось на разных форумах, но ошибка остается той же.Интересно, что когда запускается команда pyinstaller, мой графический интерфейс автоматически появляется на экране, и мне приходится закрывать его вручную.В прошлом я много раз использовал pyinstaller, но этот вопрос для меня совершенно новый.Может кто-нибудь подсказать, что я делаю не так?

ОБНОВЛЕНИЕ: Я только что исправил свою ошибку с помощью этой команды: pip install --force-reinstall --no-binary :all: pyinstaller.Нашел здесь: github.com / pyinstaller / pyinstaller / Issues / 3777

...