带烧瓶导入错误的NLTK

时间:2013-07-13 15:20:30

标签: 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并使用它,我没有问题。

然而,当我尝试将其与烧瓶一起部署时。我将一个目录移出并运行 ./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

但是我觉得我在某个地方缺少一些安装,以便在部署时使其工作。

1 个答案:

答案 0 :(得分:2)

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

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

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