除非路径是绝对路径,否则引用 Flask 应用中的目录不起作用
- 2024-12-12 08:41:00
- admin 原创
- 123
问题描述:
我将 nltk 数据下载到 Flask 应用程序中的数据目录中。视图位于与数据目录同一级别的另一个目录中的蓝图中。在视图中,我尝试设置数据的路径,但不起作用。
nltk.data.path.append('../nltk_data/')
这不起作用。如果我使用整个路径,它确实有效。
nltk.data.path.append('/home/username/myapp/app/nltk_data/')
为什么第一个形式不起作用?我该如何正确引用数据的位置?
解决方案 1:
在 Python(以及大多数语言)中,代码在包中的位置与运行程序时的工作目录不同。所有相对路径都相对于当前工作目录,而不是其写入的代码文件。因此,nltk_data/
即使从蓝图中,您也会使用相对路径,或者使用绝对路径,这样就不会产生歧义。
应用程序(或蓝图)上的属性root_path
指的是应用程序(或蓝图)的包目录。将相对路径添加到该路径中可获得绝对路径。
resource_path = os.path.join(app.root_path, 'enltk_data')
每次调用视图时可能没有必要附加此文件夹。我不太熟悉 nltk,但可能有一种方法可以构造它,以便您在创建应用程序时设置一次数据路径。
project / app / blueprint
/ data
^ join with root_path to get here
^ app.root_path always points here, no matter where cwd is
^ current working directory
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD