2015-06-30 2 views
6

Я строю Docker контейнер с помощью следующей Dockerfile:Docker NLTK Скачать

FROM ubuntu:14.04 

RUN apt-get update 

RUN apt-get install -y python python-dev python-pip 

ADD . /app 

RUN apt-get install -y python-scipy 

RUN pip install -r /arrc/requirements.txt 

EXPOSE 5000 

WORKDIR /app 

CMD python app.py 

Все идет хорошо, пока я не запускать файл и получить следующее сообщение об ошибке:

********************************************************************** 
    Resource u'tokenizers/punkt/english.pickle' not found. Please 
    use the NLTK Downloader to obtain the resource: >>> 
    nltk.download() 
    Searched in: 
    - '/root/nltk_data' 
    - '/usr/share/nltk_data' 
    - '/usr/local/share/nltk_data' 
    - '/usr/lib/nltk_data' 
    - '/usr/local/lib/nltk_data' 
    - u'' 
********************************************************************** 

Я имел эту проблему раньше и обсуждается here, однако я не уверен, как подойти к нему с помощью Docker. Я пробовал:

CMD python 
CMD import nltk 
CMD nltk.download() 

, а также:

CMD python -m nltk.downloader -d /usr/share/nltk_data popular 

Но я все еще получаю ошибку.

+0

это неправильно «CMD питон CMD импорта NLTK CMD nltk.download()» это то же самое, как открыт терминал, тип 'python', открыть другой терминал, тип' импорта nltk' и так (конечно, вторая команда не будет выполнена, так как она не находится в Python – user2915097

+1

может быть 'RUN python -c 'import nltk; nltk.download()'' или что-то в этом роде (я не уверен в синтаксисе) – user2915097

ответ

13

В вашем Dockerfile, попробуйте добавить вместо:

RUN python -m nltk.downloader punkt

Это позволит запустить команду и установить требуемые файлы //nltk_data/

Проблема, скорее всего, связано с использованием CMD против RUN в Dockerfile , Документация для CMD:

The main purpose of a CMD is to provide defaults for an executing container.

, который используется во время docker run <image>, а не во время сборки. Таким образом, другие линии CMD, вероятно, были перезаписаны последней строкой CMD python app.py.

+0

знаете ли вы, в папке nltk_data, мне нужно скопировать как несжатые папки, так и zip-файлы или только zip-файлы? – perrohunter

+0

Я использую этот подход, но я получаю эту ошибку: /usr/local/lib/python3.6/runpy.py:125: RuntimeWarning: 'nltk.downloader', найденный в sys.modules после импорта пакета 'nltk', но до выполнения 'nltk.downloader'; это может привести к непредсказуемому поведению aviour – xzegga

Смежные вопросы