docker工人不工作NLTK

我想在Docker中运行一个nltk服务。 但是,我总是得到错误信息“'nltk'不是一个包”。 你能弄清楚什么是错的? 在构build过程中一切正常,打印nltk版本。 当用docker-compose up nltk启动容器时,我得到docker-compose up nltk

$ docker-compose up 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() 

尝试将nltk.py重命名为其他内容。 我猜测import nltkfrom nltk.corpus试图从您的nltk.py文件而不是包导入。 构build映像时,它的工作原理是因为你的nltk.py文件还没有存在,因为它是在nltk.py文件的运行nltk.py入的。

最终的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" ] 

最终的docker工人

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