Pyinstaller:读取csv的程序

时间:2018-04-12 08:12:42

标签: python pyinstaller

我正在python中构建一个程序,它读取用户给出的csv文件。

我正在使用Pyinstaller来构建MacOS应用程序。

在Windows中,我使用了CX_freeze,我只需将csv文件放在与.exe相同的目录中,以便程序正常工作。但是使用PyInstaller,找不到文件即使我把它放在同一个目录中。

那么用户必须放置文件以便程序找到它?

该程序是一个非常基本的程序,如下所示:

import pandas as pd

df = pd.read_csv('file.csv')

print(df)

感谢。

1 个答案:

答案 0 :(得分:3)

当我使用Pyinstaller创建可执行文件时,我必须使用--add-data参数。

http://pyinstaller.readthedocs.io/en/stable/spec-files.html#adding-data-files

通过此操作,您可以指定.csv等文件的路径。

如果你正在创建一个单文件包,Pyinstaller会在内部重命名路径[docs],所以如果你的.csv在某个文件夹中,你每次访问时都需要这样做项目中的文件:

def resource_path(relative):
    #print(os.environ)
    application_path = os.path.abspath(".")
    if getattr(sys, 'frozen', False):
        # If the application is run as a bundle, the pyInstaller bootloader
        # extends the sys module by a flag frozen=True and sets the app 
        # path into variable _MEIPASS'.
        application_path = sys._MEIPASS
    #print(application_path)
return os.path.join(application_path, relative)