我正在用 python 构建一个程序,它读取用户提供的 csv 文件。
我正在使用 Pyinstaller 构建 MacOS 应用程序。
在 Windows 中,我使用了 CX_freeze,我只需要将 csv 文件放在与 .exe 相同的目录中,程序就可以运行。但是使用 PyInstaller,即使我将它放在同一目录中,也找不到该文件。
那么用户必须将文件放在哪里才能让程序找到它?
该程序是一个非常基础的程序,如下所示:
import pandas as pd
df = pd.read_csv('file.csv')
print(df)
谢谢。
当我使用 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)
我是一名优秀的程序员,十分优秀!