我将nltk数据下载到Flask应用程序的data目录中。视图位于与数据目录相同级别的另一个目录的蓝图中。在视图中,我试图设置数据的路径,但是它不起作用。
nltk.data.path.append('../nltk_data/')
这行不通。如果我使用整个路径,它将起作用。
nltk.data.path.append('/home/username/myapp/app/nltk_data/')
为什么第一种形式不起作用?如何正确引用数据的位置?
在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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句