2017-04-02 80 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 
相关问题