2015-06-30 2 views
6

मैं निम्नलिखित Dockerfile का उपयोग कर एक डोकर कंटेनर का निर्माण कर रहा हूँ:डोकर NLTK डाउनलोड

********************************************************************** 
    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'' 
********************************************************************** 

मैं इस समस्या को पड़ा है:

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 

सब कुछ जब तक मैं छवि चलाने के लिए और निम्नलिखित त्रुटि मिलती है अच्छी तरह से चला जाता है इससे पहले और इस पर चर्चा की गई है here हालांकि मुझे यकीन नहीं है कि डॉकर का उपयोग करके इसका उपयोग कैसे किया जाए। मैंने कोशिश की है:

CMD python 
CMD import nltk 
CMD nltk.download() 

के साथ-साथ:

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

लेकिन अभी भी त्रुटि हो रही है।

+0

यह गलत है "सीएमडी अजगर सीएमडी आयात nltk सीएमडी nltk.download()" यह, खुले एक टर्मिनल, प्रकार 'python' रूप में ही है एक और टर्मिनल, प्रकार' आयात nltk' खोल सकते हैं और इसलिए (बेशक दूसरा कमांड विफल हो जाएगा, क्योंकि यह पायथन – user2915097

+1

में नहीं है, शायद 'रन पाइथन-सी' आयात nltk; nltk.download() '' या ऐसा कुछ (मुझे वाक्यविन्यास का यकीन नहीं है) – user2915097

उत्तर

13

अपने Dockerfile में, बजाय जोड़ने का प्रयास करें:

RUN python -m nltk.downloader punkt

यह आदेश चलाने के लिए और //nltk_data/

समस्या

करने का अनुरोध फ़ाइलें स्थापित हो जाएगा सबसे अधिक संभावना सीएमडी बनाम Dockerfile में चलाने का उपयोग कर से संबंधित है । सीएमडी के लिए प्रलेखन:

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

जिसका उपयोग docker run <image> के दौरान किया जाता है, निर्माण के दौरान नहीं। तो अन्य सीएमडी लाइनों को शायद अंतिम CMD python app.py लाइन द्वारा अधिलेखित किया गया था।

+0

क्या आप जानते हैं कि मैं सिर्फ कॉपी करता हूं nltk_data फ़ोल्डर, क्या मुझे असंपीड़ित फ़ोल्डरों और ज़िप फ़ाइलों या केवल ज़िपफाइल दोनों की प्रतिलिपि बनाने की आवश्यकता है? – perrohunter

+0

मैं इस दृष्टिकोण का उपयोग कर रहा हूं लेकिन मुझे यह त्रुटि मिल रही है: /usr/local/lib/python3.6/runpy.py:125: रनटाइम चेतावनी: 'nltk.downloader' पैकेज 'nltk' के आयात के बाद sys.modules में मिला, लेकिन 'nltk.downloader' के निष्पादन से पहले; इसका परिणाम अप्रत्याशित व्यवहार हो सकता है aviour – xzegga