Pyinstaller로 exe 파일을 성공적으로 만들었습니다. 그러나 exe 파일을 실행하고 exe 파일을 팝업하는 메시지 상자에 경로, 파일 및 시트 이름을 입력하면 파일 이름 또는 시트 이름을 잘못 입력 한 파일이 표시됩니다. 분명히이 메시지를 직접 입력하므로 내 질문은 다음과 같습니다. exe 파일이 내 파일을 찾는 데 문제가있는 반면 PyCharm에서 똑같은 작업을 수행하면 실행하는 데 문제가없는 이유는 무엇입니까?
import pandas as pd
import numpy as np
import tkinter as tk
from tkinter import messagebox
def create_file():
try:
FILEPATH = e0.get()
w_filename = e1.get()
x_filename = e2.get()
y_filename = e3.get()
z_inventory_filename = e4.get()
aa_active_filename = e5.get()
ab_test_filename = e6.get()
output_filename = e7.get()
w_sheetname = e1_sheet.get()
x_sheetname = e2_sheet.get()
y_sheetname = e3_sheet.get()
z_sheetname = e4_sheet.get()
aa_sheetname = e5_sheet.get()
ab_test_sheetname = e6_sheet.get()
except:
messagebox.showinfo("Error", "Please fill out all fields.")
try:
w= pd.read_excel(FILEPATH +"\\"+ w_filename, sheetname=w_sheetname, header=0)
x = pd.read_excel(FILEPATH +"\\"+ x_filename, sheetname=x_sheetname, header=0)
y = pd.read_excel(FILEPATH +"\\"+y_filename, sheetname=y_sheetname, header=0)
z_inventory = pd.read_excel(FILEPATH +"\\"+ z_inventory_filename, sheetname=z_inventory_sheetname, header=0)
aa_active = pd.read_excel(FILEPATH +"\\"+ aa_active_filename, sheetname=aa_active_sheetname, header=0)
ab_test_ready = pd.read_excel(FILEPATH +"\\"+ ab_test_filename, sheetname=ab_test_sheetname, header=0)
except:
messagebox.showinfo("Error", "You have mistyped either a filename or a sheetname.")
누구든지 이것에 대한 구체적인 대답이 있기를 바랍니다.
감사,
Jeroen
경로를 변환하는 함수를 정의하십시오.
import os, sys
def resource_path(relative_path):
if hasattr(sys, "_MEIPASS"):
base_path = sys._MEIPASS
else:
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)
이 함수를 사용하여 파일 경로를 왜곡합니다. 예를 들면 다음과 같습니다.
bingo_music = resource_path('resources/bingo.wav')
demo_file = resource_path('texts/demo.txt')
.spec
파일에서 목록을 exe = EXE()
다음 위치에 넣으 십시오 .
[('resources/bingo.wav', r'C:\Users\Administrator\resources\bingo.wav', 'music'),
[('texts/demo.txt', r'C:\Users\Administrator\texts\demo.txt', 'text'),],
프로젝트에서 사용하는 모든 파일을 tuple (relative_path, absolute_path, folder_name_in_bundled_app)
로 작성합니다. 세 번째 인수는 파일이 복사 될 번들 앱의 폴더 이름입니다. 그러면 파일이 제대로 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다