2017-04-02 74 views
0

我想在docker中運行nltk服務。不過,我總是收到錯誤消息「'nltk'不是一個包」。你能弄清楚什麼是錯的?在編譯期間一切正常,打印nltk版本。當docker-compose up nltk啓動容器我得到NLTK在docker中不工作

$碼頭工人,組成了NLTK

Recreating nltk 
Attaching to nltk 
nltk   | Traceback (most recent call last): 
nltk   | File "/var/www/nltk.py", line 1, in <module> 
nltk   |  from nltk.corpus import brown 
nltk   | File "/var/www/nltk.py", line 1, in <module> 
nltk   |  from nltk.corpus import brown 
nltk   | ModuleNotFoundError: No module named 'nltk.corpus'; 'nltk' is not a package 

泊塢窗,compose.yml

nltk: 
    build: docker/nltk 
    container_name: nltk 
    volumes: 
     - ./volumes/nltk/var/www/nltk.py:/var/www/nltk.py 
    environment: 
     HOME: /var/www 

Dockerfile

FROM python:3.6 

RUN mkdir /var/www 
ENV HOME /var/www 
WORKDIR /var/www 
RUN pip install -U nltk 
RUN pip install -U numpy 
RUN python -m nltk.downloader -d $HOME/nltk_data all 
RUN python -c "import nltk" 
RUN python -c "import nltk; print(nltk.__version__)" 

EXPOSE 80 

CMD [ "python", "/var/www/nltk.py" ] 

nltk.py

import nltk 
from nltk.corpus import brown 

brown.words() 

回答

0

嘗試重命名nltk.py到別的東西。我猜import nltkfrom nltk.corpus正試圖從您的nltk.py文件而不是包中導入。它在構建映像時起作用的原因是因爲nltk.py文件尚未存在,因爲它在運行時從撰寫文件安裝。

+0

大。我想這是訣竅。謝謝!我會發布最終版本 – Sebastian

0

最終Dockerfile

FROM python:3.6 

ENV NLTK_DATA /usr/share/nltk_data 

RUN pip install -U nltk 
RUN pip install -U numpy 
RUN python -m nltk.downloader -d /usr/share/nltk_data all 

EXPOSE 80 

WORKDIR /var/www 

CMD [ "python", "/var/www/main.py" ] 

最終搬運工,組成

nltk: 
    build: docker/nltk 
    container_name: nltk 
    volumes: 
     - ./volumes/nltk/var/www/main.py:/var/www/main.py