我使用kivy作为GUI,使用公文包作为打包工具。我的.kv文件位于appname/project/src/projectName/resources文件夹中。我还需要一个.csv文件,在同一个文件夹中,并希望与它一起使用pandas。导入包没有问题(我将它们添加到.toml文件中)。我无法使用完整路径,因为当我打包应用程序时,每台计算机上的路径将不同。使用app.py文件的相对路径不起作用,出现文件未找到错误。有没有办法使用相对路径(可能是.toml文件中的source参数)读取文件?
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发布于 2021-11-21 23:18:07
尽管我使用的是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__返回当前文件在任何平台或设备上的路径。
https://stackoverflow.com/questions/68654307
复制相似问题