0

我使用 kivy 作为 GUI,使用 Briefcase 作为打包工具。我的 .kv 文件位于 appname/project/src/projectName/resources 文件夹中。我还需要一个 .csv 文件,在同一个文件夹中,并且想使用 pandas 。导入包没有问题(我将它们添加到 .toml 文件中)。我不能使用完整路径,因为当我打包应用程序时,每台计算机上的路径都会不同。使用 app.py 文件的相对路径不起作用,给我一个找不到文件的错误。有没有办法使用相对路径(可能是 .toml 文件中的源参数)读取文件?

kv = Builder.load_file('resources/builder.kv')
df = pd.read_csv('resources/chemdata.csv')

class ChemApp(App):
    def build(self):
        self.icon = 'resources/elemental.ico'
        return kv
4

1 回答 1

0

即使我使用的是 BeeWare 的 Toga GUI,我也刚刚遇到并解决了公文包的类似问题。

在我的例子中,主要的 Python 文件app.py必须访问一个数据库文件resources/data.csv。在我在其中创建主窗口的类的构造函数中app.py,我添加了以下几行(导入行不存在,但在此处包含以进行说明):

from pathlib import Path

self.resources_folder = Path(__file__).joinpath("../resources").resolve()
self.db_filepath = self.resources_folder.joinpath("data.csv")

然后我用self.db_filepath我的手机成功打开了 CSV 文件。

__file__在任何平台或设备上返回当前文件的路径。

于 2021-11-21T23:18:07.493 回答