2013-07-13 46 views
2

我的文件夾目錄是這樣NLTK與瓶進口錯誤

/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 

我在哪裏,如果我嘗試的一個問題運行程序直接進入/應用程序並運行

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使用

錯誤說法

但我覺得我錯過了一些安裝的地方,使其在部署時工作。

+0

你在使用什麼操作系統以及哪個版本的Python? – Apelsin

+0

Ubuntu 12.04和Python 2.7.3 – Rahul

回答

2

它看起來像你的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環境之外安裝的軟件包。

+0

我已經在venv中運行sudo pip install -U pyyaml nltk,它似乎沒有做任何事情。我只是試着運行pip install nltk,而事情似乎正常。謝謝! – Rahul

+1

@Rahul:啊,'sudo'實際上是在一個新shell上運行pip命令,這意味着這個命令在virtualenv之外運行。 –