为了账号安全,请及时绑定邮箱和手机立即绑定

引用Flask应用程序中的目录不起作用,除非路径是绝对的

引用Flask应用程序中的目录不起作用,除非路径是绝对的

临摹微笑 2019-06-25 11:09:24
引用Flask应用程序中的目录不起作用,除非路径是绝对的我下载了nltk数据到我的Flask应用程序的数据目录中。视图驻留在与数据目录相同级别的另一个目录中的蓝图中。在视图中,我试图设置数据的路径,但它不起作用。nltk.data.path.append('../nltk_data/')这不管用。如果我用了整条路,它就能用了。nltk.data.path.append('/home/username/myapp/app/nltk_data/')为什么第一种形式不起作用?如何正确地引用数据的位置?
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

在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


查看完整回答
反对 回复 2019-06-25
  • 1 回答
  • 0 关注
  • 398 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信