我用cx_freeze从我的.py文件中创建了一个.exe。当我生成.exe文件时,我的2个数据文件已成功包含在build文件夹中,但是当我运行.exe时,程序找不到这些文件。
我的设置():
from cx_Freeze import setup, Executable
setup(name='pipermain',
options={ 'build_exe':{'packages':[ 'tkinter','PIL' ],'include_files': ['Transactions.csv', 'piper_copy.png' ]}},
description='',
executables= [Executable('pipermain.py')]
)
我认为这是我的.py代码中的文件路径存在问题-无论.exe在什么计算机上运行,如何为我的.exe编写正确的文件路径以查找数据文件?>
我的文件路径是:
filepath = 'Transactions.csv'
因为数据文件位于我的.py项目文件夹中。当我从PyCharm运行.py时,此方法成功运行。但是当我运行.exe时,它无法在build文件夹中找到文件。现在,为了使文件路径适用于任何系统,它是:
filepath = os.path.abspath( 'Transactions.csv' )
.exe仅在我的文件路径适合我自己的系统(/User/ethan/documents/project/transactions.csv)时才起作用。但是,如果我将此.exe发送给其他人,则文件路径显然将不起作用。
我试图通过分配p = os.path.abspath('transactions.csv')在任何系统上工作来创建变量文件路径,但是在运行.exe时收到错误消息,指出该文件不存在。我在做什么错了?
答案 0 :(得分:0)
包括方法:
def resource_path(relative_path):
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, relative_path)
return os.path.join(os.path.abspath("."), relative_path)
,然后使用以下命令引用任何文件路径:
logopath =resource_path('Logo.jpg')
应该为您解决问题