首页 > 解决方案 > 使用 python 和 spacy lib 部署 js

问题描述

我从来没有这样设置过,我让它在本地运行,但不知道当我将它部署到一个ec2 server

我已经在node app运行,ec2 server但最近我已添加spaCy到我的一个 api 中。

基本逻辑是调用运行节点的 api 和部分 js 脚本用于spawn处理proc.py文件并使用输出进行一些计算。

我已尝试以下方法在我的服务器上进行设置,但在调用 api 时当然失败了

我原来的节点应用程序在/var/www/myApp

sudo apt install virtualenv然后我在我的内部使用了创建虚拟环境/var/www/myApp的命令virtualenv venv...

我做了一个source venv/bin/activate进入virtual environment

然后我开始运行https://github.com/explosion/spaCyspacy中提到的安装命令spacy documentation

使用此命令安装pip install -U spacypython -m spacy download en

然后我跑去python -m spacy validate看看我得到的spacy是否安装了

Installed models (spaCy v2.0.11)
    /var/www/myApp/venv/local/lib/python2.7/site-packages/spacy

    TYPE        NAME                  MODEL                 VERSION                                   
    package     en-core-web-sm        en_core_web_sm        2.0.0    ✔      
    link        en                    en_core_web_sm        2.0.0    ✔  

我相信这意味着安装成功。

但在此之后,我不确定我应该怎么做才能继续。

我尝试运行我的 api,但将此作为错误消息"err": "Traceback (most recent call last):\n"

我相信spacy没有调用该模块,这就是我收到此错误的原因,但我不确定我应该怎么做才能使其正常工作。

非常感谢您的帮助,在此先感谢您的任何建议。

编辑:

我的proc.py代码在下面

if __name__ == '__main__':
    import sys
    import json
    import spacy

    nlp = spacy.load('en')
    text = sys.argv[1]
    doc = nlp(text)

    all_noun_tokens = [ token.lemma_ for token in doc
            if (token.pos_ == 'PROPN'
                or token.pos_ == 'NOUN'
                or token.tag_ == 'NN'
                or token.tag_ == 'NNP') ]

    print(json.dumps(all_noun_tokens))

PS我想知道我是否需要做任何配置才能让我的应用程序找到它的virtuanenv位置以便它可以检测到spacy模块?

标签: javascriptpythonnode.jsdeploymentspacy

解决方案


推荐阅读