我的文件夹目录是这样的
/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
我使用
安装了nltksudo pip install -U pyyaml nltk
但是我觉得我在某个地方缺少一些安装,以便在部署时使其工作。
答案 0 :(得分:2)
看起来你的virtualenv的激活导致了这个问题。在运行sudo pip install -U pyyaml nltk
之前是否激活了virtualenv?如果没有,它们是全球安装的。请记住,默认情况下,当您创建virtualenv环境时,它将忽略未直接安装到环境中的所有软件包(换句话说,它将忽略您使用apt-get install
全局安装的软件包)。所以,你有两个选择:
将您的依赖项安装到您的virtualenv中(通过激活virtualenv然后执行pip install nltk
)。如果nltk依赖于任何开发库,您还需要安装这些开发库。这些可以使用您的包管理器(apt-get
)安装。
这次使用--system-site-packages
选项重建你的virtualenv。这将允许您使用在virtualenv环境之外安装的包。