python - NLTK 出现 Flask 导入错误

标签 python flask nltk importerror

我的文件夹目录是这样的

/maindir
  __init__.py
  settings.py
  start
  /run.py
  /venv
    .. other directories for flask here bin,include..etc
  /app
    __init__.py
    main.py
    views.py
    /nbc
      /__init__.py
      naivebayesclassifier.py

naivebayesclassifier.py 模块使用 nltk 库

from nltk.probability import ELEProbDist, FreqDist
import nltk
from collections import defaultdict
from os import listdir  
from os.path import isfile, join

我遇到一个问题,如果我尝试直接进入/app 并运行该程序

python main.py 

进一步包含 NBC 并使用它,我没有任何问题。

但是,当我尝试将其与 Flask 一起部署时。我移出一个目录并运行 ./start,其中包含以下内容

. venv/bin.activate
./run.py

并且 run.py 有以下内容

#!venv/bin/python
from app import app
app.run(debug = True)

在我包含 nltk 库之前,这已经起作用了,但是现在它给了我错误消息

ImportError: No module named nltk.probability

我已经使用安装了 nltk

sudo pip install -U pyyaml nltk

但我觉得我在某处缺少一些安装以使其在部署时正常工作。

最佳答案

看来是您的 virtualenv 的激活导致了问题。您在运行 sudo pip install -U pyyaml nltk 之前激活了 virtualenv 吗?如果没有,它们就会在全局范围内安装。请记住,默认情况下,当您创建 virtualenv 环境时,它将忽略所有未直接安装到环境本身中的软件包(换句话说,它将忽略您使用 apt-get install 全局安装的软件包) 。因此,您有两个选择:

  1. 将依赖项安装到 virtualenv 中(通过激活 virtualenv 然后执行 pip install nltk)。如果 nltk 依赖于任何开发库,您还需要安装这些开发库。可以使用包管理器 (apt-get) 安装它们。

  2. 重建您的 virtualenv,这次使用 --system-site-packages选项。这将允许您使用安装在 virtualenv 环境之外的软件包。

关于python - NLTK 出现 Flask 导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17631510/

相关文章:

python - 运行 apt-get 进出 Anaconda

python-3.x - 通过 enctype ="multipart/form-data"上传多个文件,第一个上传的文件大小始终为0,其余都可以

python - NLTK。判断一个句子是否为疑问句

Python:替换项目

python - 使用 Python 进行实时文本处理

python 字符串中出现的字母。索引计数

python - 在 Python 中将列中的数字相加无法正常工作?

python - 安全的 Python REST API

python - ffmpeg:加载共享库时出错:libmp3lame.so.0:无法打开共享对象文件:没有这样的文件或目录

Flask:带有stream_with_context的流文件非常慢