구현되지 않음 오류 : 등록되지 않은 로더 유형에 대해이 작업을 수행 할 수 없습니다.

Aug 17 2020

Pandas 데이터 프레임을 사용하여 두 개의 Excel 시트를 비교하기위한 Windows 응용 프로그램을 만들었습니다. dataframe.stlye.apply를 사용하여 데이터에 따라 다른 색상으로 일부 열을 강조 표시하고 새 Excel 파일로 내보냈습니다. 또한 .py를 .exe로 변환하기 위해 pyinstaller를 사용했습니다.

코드 스 니펫 -save_op_file 함수는 스타일을 적용하고 엑셀에 저장하는 기능입니다.

def save_op_file(df):
    save_path = filedialog.asksaveasfilename(defaultextension='xlsx')
    writer = pd.ExcelWriter(save_path, engine='xlsxwriter')

    df1 = ''
    item_count = 0
    for items in changes:
        pos_count = 0
        for pos in items:
            if item_count == 0 and pos_count == 0:
                df1 = df.style.apply(write_style_yellow, row_idx=pos[0], col_idx=pos[1], axis=None)
            else:
                if pos_count == 0:
                    df1 = df1.apply(write_style_yellow, row_idx=pos[0], col_idx=pos[1], axis= None)
                else:
                    df1 = df1.apply(write_style_red, row_idx=pos[0], col_idx=pos[1], axis= None)

            item_count += 1
            pos_count += 1
            print('df1:')
            print(df1)
            df1.to_excel(writer, sheet_name='Sheet1', index=False)
    writer.save()
def write_style_yellow(x, row_idx, col_idx):
    color = 'background-color: yellow'
    df_styler = pd.DataFrame('', index=x.index, columns=x.columns)
    df_styler.iloc[row_idx,col_idx] = color
    return df_styler
def write_style_red(x,row_idx,col_idx):
    color = 'background-color: red'
    df_styler = pd.DataFrame('', index=x.index, columns=x.columns)
    df_styler.iloc[row_idx,col_idx] = color
    return df_styler

이제 내 응용 프로그램을 실행할 때이 오류가 발생합니다.

    Exception in Tkinter callback 
       Traceback (most recent call last): 
         File "tkinter\ init .py", line 1883, in _call_ 
         File "Excel.py", line 199, in <lambda> 
         File "Excel.py", line 217, in save_op_file 
         File "pandas\core\frame.py", line 836, in style 
         File "<frozen importlib._bootstrap>", line 991, in _find_and_load 
         File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked 
         File "<frozen importlib._bootstrap>", line 671, in _load_unlocked 
         File "c:\users\asus\pycharmprojects\myproject\venv\lib\site- 
        packages\PyInstaller\loader\pyimod03_importers.py", line 493, in exec_module 
          exec(bytecode, module. dict ) 
         File "pandas\io\formats\style.py", line 51, in <module> 
         File "pandas\io\formats\style.py", line 124, in Styler 
         File "jinja2\environment.py", line 883, in get_template 
         File "jinja2\environment.py", line 857, in _load_template 
         File "jinja2\loaders.py", line 115, in load File "jinja2\loaders.py", line 248, in get_source 
         File "pkg_resources\ init .py", line 1404, in has_resource 
         File "pkg_resources\ init .py", line 1473, in _has 
         NotlmplementedError: Can't perform this operation for unregistered loader type*

이 문제를 해결하는 데 도움을 주시겠습니까? 미리 감사드립니다.

답변

PritamMondal Aug 18 2020 at 16:41

나는 이것을 해결할 수있다.

이 문제는 pkg_resources가 pyinstaller와 호환되지 않고 jinja2가 pkg_resources를 사용하기 때문에 발생합니다.

해결:

.py 파일을 .exe로 변환하기 위해 pyinstaller 대신 cx_Freeze를 사용했는데 제대로 작동했습니다. 이것을 cx_Freeze에 대해 참조 할 수 있습니다-Python 용 .py를 .exe로 어떻게 변환 할 수 있습니까?

cx_Freeze 사용 참조-

Python 용 .py를 .exe로 어떻게 변환 할 수 있습니까?

감사!