无法从 tkinter Python 的 exe 下载数据帧到 excel

cant download dataframe to excel from exe of tkinter Python

我尝试使用 Tkinter 库将我的数据分析项目转换为 GUI。 我在 PyCharm 上构建了整个项目并且一切正常。

所以我尝试将我的项目转换为 exe。

我在终端上输入了这段代码:

pyinstaller.exe --onefile --icon="icon.png" gui.py  

然后在 dist 文件夹上,我将我的资产文件夹复制到带有 exe 的新文件夹(这样所有图像都可以工作,而且它们确实如此 - 我的 exe 项目工作) 所有图形显示都有效。 这是我的 dist 文件夹:

尽管当我尝试将我的 DataFrame 执行到 excel 项目时,我在 exe 项目的终端上遇到错误:

Exception in Tkinter callback                                                                                           
Traceback (most recent call last):                                                                                        
File "tkinter\__init__.py", line 1921, in __call__                                                                      
File "gui.py", line 180, in <lambda>                                                                                    
File "Analyst.py", line 64, in print_sum                                                                                
File "Analyst.py", line 10, in download_df_to_csv_local                                                                 
File "pandas\core\generic.py", line 2345, in to_excel                                                                   
File "pandas\io\formats\excel.py", line 888, in write                                                                   
File "pandas\io\excel\_openpyxl.py", line 49, in __init__                                                             
ModuleNotFoundError: No module named 'openpyxl'`  

如您所见,问题出在我的文件 Analyst.py 函数上:

def download_df_to_csv_local(df):
    token_id = secrets.token_urlsafe(6)
    df.to_excel(r'C:\Users\עידן\Desktop\all_connected' + token_id + '.xlsx', index=False)

我不得不提一下,我的 PyCharm 一切正常,只有当我编译为 exe 时才出现错误

当正在转换为exe的主文件中存在不可见或直接导入的导入时,会出现此错误。由于 pandas 使用模块 openpyxl 读取和写入不同的 excel 格式。

您可以在 pyinstaller 中使用 --hidden-import MODULE-NAME 选项。

该命令将如下所示: pyinstaller --onefile --hidden-import openpyxl --icon="icon.png" gui.py

我按照以下方式解决了自己的错误:

  1. 在终端上确保您在项目路径上。
  2. 输入pip install openpyxl
  3. 按类型执行要exe的文件pyinstaller --onefile --icon="icon.png" gui.py