【问题标题】:Azure Python Deployment - Spacy nomodule found exceptionAzure Python 部署 - Spacy nomodule 发现异常
【发布时间】:2019-12-26 13:54:15
【问题描述】:

我正在使用 Linux 应用服务。我正在尝试通过 Azure DevOps 管道部署 python 3.6 烧瓶应用程序。它适用于基本应用程序,但是当我添加额外的代码(spacy 模块)时,它开始抛出

2019-12-24T18:07:33.079953940Z     __import__(module)
2019-12-24T18:07:33.079961840Z   File "/home/site/wwwroot/application.py", line 3, in <module>
2019-12-24T18:07:33.079970340Z     from Data_Cleanup_utility.clear_content_utility import ClearContent
2019-12-24T18:07:33.079978440Z   File "/home/site/wwwroot/Data_Cleanup_utility/clear_content_utility.py", line 12, in <module>
2019-12-24T18:07:33.079986741Z     import spacy
2019-12-24T18:07:33.079994741Z **ModuleNotFoundError: No module named 'spacy'**
2019-12-24T18:07:33.084726683Z [2019-12-24 18:07:33 +0000] [51] [INFO] Worker exiting (pid: 51)
2019-12-24T18:07:33.170423056Z [2019-12-24 18:07:33 +0000] [48] [INFO] Shutting down: Master
2019-12-24T18:07:33.172257711Z [2019-12-24 18:07:33 +0000] [48] [INFO] Reason: Worker failed to boot.

我在requirement.txt

中添加了依赖模块
Flask==1.0.2
Flask-Cors==3.0.8
Flask-RESTful==0.3.7
fastai==1.0.59
numpy==1.17.4
pandas==0.25.3
requests==2.22.0
spacy==2.2.3
spacy-langdetect==0.1.2

azurepipeline.yml

- script: |
        python -m venv antenv
        source antenv/bin/activate
        python -m pip install --upgrade pip
        pip install setup
        pip install -r requirements.txt
        python -m spacy download es
      workingDirectory: $(projectRoot)
      displayName: "Install requirements"

和我的代码 clear_content_utility.py

import spacy
from spacy_langdetect import LanguageDetector

nlp = spacy.load('es')
nlp.add_pipe(LanguageDetector(), name='language_detector', last=True)

有人遇到过上述问题吗?感谢你的帮助。

【问题讨论】:

    标签: python python-3.x spacy


    【解决方案1】:

    这是你应该做的事情:

    • 请确保在执行任何代码之前激活虚拟环境,并确保检查您安装的包是否真的在您的 VENV 中。

    我建议你创建新的 VENV 并尝试激活它。

    • 其次,您可以将语言数据移至子模块**spacy.lang** 以保持更清洁和更有条理。

      例如。您现在从 spacy.lang.en

      导入,而不是使用 spacy.en

        python -m spacy download en_core_web_sm
        import spacy
        nlp = spacy.load("en_core_web_sm")

    补充参考:

    https://www.pythonanywhere.com/forums/topic/13328/

    ImportError: No module named 'spacy.en'

    希望对你有帮助。

    【讨论】:

    • 感谢您的回复。我正在尝试激活新的虚拟环境,但它仍然只使用基础 python。
    • 尝试使用 virtualenv 选项“--no-site-packages” virtualenv --no-site-packages --python=/xx/xx/bin/python my_env_nmae 创建一个新的 venv
    • 部署存在多个问题。 Azure Pipeline 有问题。我已经用粘胶解决了这个问题。感谢您的帮助
    • 嗨,@Siva 我也面临同样的问题。你能详细说明你做了什么来修复它吗?
    • @Royston46 您需要在 Azure Web App 中添加以下配置以激活/使用您创建并安装所有依赖项的 virtualenv。 WEBSITE_RUN_FROM_PACKAGE = 1 如果您不添加此配置,则 Web 应用仍使用基础 python。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多