Getting notimplementederror: tidak dapat melakukan operasi ini untuk jenis loader yang tidak terdaftar

Aug 17 2020

Saya telah membangun aplikasi windows untuk membandingkan dua lembar Excel menggunakan dataframe Pandas. Saya menggunakan dataframe.stlye.apply untuk menyorot beberapa kolom dengan warna berbeda berdasarkan data dan mengekspornya ke file Excel baru. Juga, saya telah menggunakan pyinstaller untuk mengubah .py menjadi .exe.

potongan kode - fungsi save_op_file adalah untuk menerapkan gaya dan menyimpan ke dalam excel.

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

Sekarang, ketika saya menjalankan aplikasi saya, muncul kesalahan ini -

    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*

Bisakah Anda membantu saya dalam menyelesaikan masalah ini. Terima kasih sebelumnya.

Jawaban

PritamMondal Aug 18 2020 at 16:41

Saya bisa menyelesaikan ini.

Masalah ini terjadi karena pkg_resources tidak kompatibel dengan pyinstaller dan jinja2 menggunakan pkg_resources.

Resolusi:

Saya menggunakan cx_Freeze daripada pyinstaller untuk mengonversi file .py menjadi .exe, dan itu berfungsi dengan baik untuk saya. Anda dapat merujuk ini untuk cx_Freeze- Bagaimana cara mengubah .py menjadi .exe untuk Python?

Referensi untuk menggunakan cx_Freeze -

Bagaimana cara mengonversi .py menjadi .exe untuk Python?

Terima kasih!