我的.exe文件找不到其数据文件

时间:2018-06-29 05:40:29

标签: python cx-freeze

我用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时收到错误消息,指出该文件不存在。我在做什么错了?

1 个答案:

答案 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')

应该为您解决问题