我的文件夹目录是这样的
/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 全局安装的软件包) 。因此,您有两个选择:
将依赖项安装到 virtualenv 中(通过激活 virtualenv 然后执行
pip install nltk
)。如果 nltk 依赖于任何开发库,您还需要安装这些开发库。可以使用包管理器 (apt-get
) 安装它们。重建您的 virtualenv,这次使用
--system-site-packages
选项。这将允许您使用安装在 virtualenv 环境之外的软件包。
关于python - NLTK 出现 Flask 导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17631510/