GNM*_*O11 24 python nltk docker
我正在使用以下Dockerfile构建一个docker容器:
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
Run Code Online (Sandbox Code Playgroud)
一切顺利,直到我运行图像并得到以下错误:
**********************************************************************
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''
**********************************************************************
Run Code Online (Sandbox Code Playgroud)
我以前遇到过这个问题,这里讨论但是我不知道如何使用Docker来解决它.我试过了:
CMD python
CMD import nltk
CMD nltk.download()
Run Code Online (Sandbox Code Playgroud)
以及:
CMD python -m nltk.downloader -d /usr/share/nltk_data popular
Run Code Online (Sandbox Code Playgroud)
但我仍然得到错误.
cch*_*chi 31
在Dockerfile中,尝试添加:
RUN python -m nltk.downloader punkt
这将运行命令并将所请求的文件安装到 //nltk_data/
问题很可能与在Dockerfile中使用CMD与RUN有关.CMD文档:
CMD的主要目的是为执行容器提供默认值.
docker run <image>
在构建期间使用,而不是在构建期间使用 所以其他CMD线可能被最后CMD python app.py
一行覆盖.
小智 7
好吧,我尝试了所有建议的方法,但没有任何效果,所以我意识到 nltk 模块在 /root/nltk_data 中搜索
第 1 步:我使用以下命令在我的机器上下载了 punkt
python3
>>import nltk
>>nltk.download('punkt')
Run Code Online (Sandbox Code Playgroud)
punkt 在 /root/nltk_data/tokenizer
第 2 步:我将 tokenizer 文件夹复制到我的导演,我的目录看起来像这样
.
|-app/
|-tokenizers/
|--punkt/
|---all those pkl files
|--punkt.zip
Run Code Online (Sandbox Code Playgroud)
和第 3 步:然后我修改了 Dockerfile,将其复制到我的 docker 实例
COPY ./tokenizers /root/nltk_data/tokenizers
Run Code Online (Sandbox Code Playgroud)
第 4 步:新实例有 punkt
我通过指示容器内的下载目的地来使其适用于谷歌云构建。
RUN [ "python3", "-c", "import nltk; nltk.download('punkt', download_dir='/usr/local/nltk_data')" ]
完整的 Dockerfile
FROM python:3.8.3
WORKDIR /app
ADD . /app
# install requirements
RUN pip3 install --upgrade pip
RUN pip3 install --no-cache-dir --compile -r requirements.txt
RUN [ "python3", "-c", "import nltk; nltk.download('punkt', download_dir='/usr/local/nltk_data')" ]
CMD exec uvicorn --host 0.0.0.0 --port $PORT main:app
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7435 次 |
最近记录: |