如何将包含多个数据文件的Python文件转换为.exe格式?

如何将包含多个数据文件的Python文件转换为.exe格式?,python,py2exe,setup.py,Python,Py2exe,Setup.py,我是新来的,熟悉Python和编程。我试图编写需要一个.docx、一个.xlsx和一个图像文件才能正常工作的代码。当使用py2exe将其转换为.exe格式时,出现了一些问题,我的程序无法打开!我刚刚更改了setup.py文件,如下所示: import os from distutils.core import setup import py2exe import tkinter as tk from tkinter import ttk import sys import os import

我是新来的,熟悉Python和编程。我试图编写需要一个.docx、一个.xlsx和一个图像文件才能正常工作的代码。当使用py2exe将其转换为.exe格式时,出现了一些问题,我的程序无法打开!我刚刚更改了setup.py文件,如下所示:

import os
from distutils.core import setup
import py2exe

import tkinter as tk
from tkinter import ttk
import sys
import os
import pandas as pd
from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_ALIGN_PARAGRAPH

Mydata_files = [('Data.docx', ['C:/Users/Murat/Desktop/Combobox/Data.docx']),
                   ('Data.xlsx', ['C:/Users/Murat/Desktop/Combobox/Data.xlsx']),
                   ('Logo.gif', ['C:/Users/Murat/Desktop/Combobox/Logo.gif'])]

setup(console=['Combobox.py'],
      data_files = Mydata_files,
      options={"py2exe":{"includes": ["lxml._elementpath"], "unbuffered": True, "optimize": 2}})
df=pd.read_excel("Data.xlsx")
现在,我可以在dist文件夹中查看我的数据文件,但我的代码引发权限错误:

Traceback (most recent call last):
  File "Combobox.py", line 94, in <module>
  File "pandas\util\_decorators.pyc", line 299, in wrapper
  File "pandas\io\excel\_base.pyc", line 336, in read_excel
  File "pandas\io\excel\_base.pyc", line 1057, in _init_
  File "pandas\io\excel\_base.pyc", line 938, in inspect_excel_format
  File "pandas\io\common.pyc", line 651, in get_handle
PermissionError: [Errno 13] Permission denied: 'Data.xlsx

您应该做的是在结束时使用input()命令,在关闭控制台之前等待用户

另外,请在编写脚本时始终使用main,以避免在导入时出现奇怪的行为

if __name__ == '__main__': #Use dunder method as a best practice

Mydata_files = []
for files in os.listdir("C:/Users/Murat/Desktop/Combobox/"):
    f1 = "C:/Users/Murat/Desktop/Combobox/" + files
    if os.path.isfile(f1):
        f2 = 'images', [f1]
        Mydata_files.append(f2)

setup(
    console=['trypyglet.py.py'],
    data_files=Mydata_files,
    options={
        "py2exe": {
            "unbuffered": True,
            "optimize": 2
        }
    }
)
input = input() # Use input to wait for the user

谢谢你,EldinAyal!你是对的,这是我的错误,但没有改变。谢谢你,系统。超速!在更正了我的错误(“trypyglet.py.py”必须是“Combobox.py”)之后,我尝试了您的建议,但仍然给出了以下错误:keyrerror:“lxml.etree”您确定正确安装了lxml.etree吗?