Vercel 生产中的问题。 LookupError 找不到资源

问题描述 投票:0回答:1

`` **我在生产中遇到这个错误,我在本地没有遇到它。 **

[ERROR] 2023-08-07T16:26:11.466Z    fb1bc7be-4061-455a-97b5-bb15babb27e5    

/analyze_language [POST] 上的异常 回溯(最近一次调用最后一次):

文件“/var/task/flask/app.py”,第 2190 行,wsgi_app

response = self.full_dispatch_request()

文件“/var/task/flask/app.py”,第 1486 行,在 full_dispatch_request 中

rv = self.handle_user_exception(e)

文件“/var/task/flask_cors/extension.py”,第 176 行,在wrapped_function中

return cors_after_request(app.make_response(f(*args, **kwargs)))

文件“/var/task/flask/app.py”,第 1484 行,在 full_dispatch_request 中

rv = self.dispatch_request()

文件“/var/task/flask/app.py”,第 1469 行,dispatch_request

return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)

文件“./api/index.py”,第 96 行,analyze_language

tenses_and_persons_detected = detect_tenses_and_persons(input_paragraph)

文件“./api/index.py”,第 49 行,在 detector_tenses_and_persons 中

tokens = word_tokenize(paragraph)

文件“/var/task/nltk/tokenize/init.py”,第 129 行,word_tokenize

sentences = [text] if preserve_line else sent_tokenize(text, language)

文件“/var/task/nltk/tokenize/init.py”,第 106 行,sent_tokenize

  tokenizer = load(f"tokenizers/punkt/{language}.pickle")

文件“/var/task/nltk/data.py”,第 750 行,加载中

opened_resource = _open(resource_url)

文件“/var/task/nltk/data.py”,第 876 行,在 _open 中

return find(path_, path + [""]).open()

文件“/var/task/nltk/data.py”,第 583 行,在 find 中

raise LookupError(resource_not_found)

查找错误:

资源 [93mpunkt[0m 未找到。

请使用NLTK下载器获取资源:

[31m>>> 导入nltk

nltk.download('punkt')

尝试加载[93mtokenizers/punkt/PY3/english.pickle[0m

搜索于:

- '/home/sbx_user1051/nltk_data'

- '/var/lang/nltk_data'

- '/var/lang/share/nltk_data'

- '/var/lang/lib/nltk_data'

- '/usr/share/nltk_data'

- '/usr/local/share/nltk_data'

- '/usr/lib/nltk_data'

- '/usr/local/lib/nltk_data'

if __name__ == "__main__":

    nltk.download('punkt')

    nltk.download('averaged_perceptron_tagger')

    nlp = spacy.load('en_core_web_sm')

    app.run(debug=True)

`

python flask nltk spacy
1个回答
0
投票

您的错误是linux服务器无法找到punkt模块。

我不确定这是否有帮助,但还是尝试一下:

  1. 运行
    nltk.download('punkt')
    后,检查punkt模块是否确实下载:
import nltk

if 'punkt' in nltk.data.find('tokenizers'):
    print("The 'punkt' tokenizer is available.")
else:
    print("The 'punkt' tokenizer is not available.")

  1. 如果 punkt 已下载,请检查它是否位于上述任何目录中。
- '/home/sbx_user1051/nltk_data'

- '/var/lang/nltk_data'

- '/var/lang/share/nltk_data'

- '/var/lang/lib/nltk_data'

- '/usr/share/nltk_data'

- '/usr/local/share/nltk_data'

- '/usr/lib/nltk_data'

- '/usr/local/lib/nltk_data'

如果没有,请尝试将其复制到其中之一,最好是您的用户

sbx_user1051
的目录。因为读取该文件可能存在权限问题。

  1. 查找有关加载的旧问题
    punkt
    像这些并尝试提到的一些方法:
import nltk.data
tokenizer = nltk.data.load('nltk:tokenizers/punkt/english.pickle')
© www.soinside.com 2019 - 2024. All rights reserved.