高山Linux:已安装软件包,但未找到模块

时间:2019-02-08 06:09:38

标签: python pandas numpy docker alpine

我正在为数据科学项目构建operator<图像。

我通过node安装核心依赖项。

Dockerfile-dev

docker

一切都累积到RUN apk add <package>,此时出现此错误:

FROM python:3.6-alpine

#SOFTWARE PACKAGES
ENV PACKAGES="\
    dumb-init \
    musl \
    libc6-compat \
    linux-headers \
    build-base \
    bash \
    git \
    ca-certificates \
    freetype \
    libgfortran \
    libgcc \
    libstdc++ \
    openblas \
    tcl \
    tk \
    libssl1.0 \
    "
# PYTHON DATA SCIENCE PACKAGES    
ENV PYTHON_PACKAGES="\
    numpy \
    matplotlib \
    scipy \
    scikit-learn \
    pandas \
    nltk \
    "     
RUN apk add --no-cache --virtual build-dependencies python3 \
    && apk add --virtual build-runtime \
    build-base python3-dev openblas-dev freetype-dev pkgconfig gfortran \
    && ln -s /usr/include/locale.h /usr/include/xlocale.h \
    && python3 -m ensurepip \
    && rm -r /usr/lib/python*/ensurepip \
    && pip3 install --upgrade pip setuptools \
    && ln -sf /usr/bin/python3 /usr/bin/python \
    && ln -sf pip3 /usr/bin/pip \
    && rm -r /root/.cache \
    && pip install --no-cache-dir $PYTHON_PACKAGES \
    && apk del build-runtime \
    && apk add --no-cache --virtual build-dependencies $PACKAGES \
    && rm -rf /var/cache/apk/*

# add and install requirements
COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip install -r requirements.txt

但是pandas已预先安装:

  

运行numpy的setup.py安装:状态为“完成”

尚未击败,我将 Complete output from command python setup.py egg_info: Traceback (most recent call last): File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 359, in get_provider module = sys.modules[moduleOrReq] KeyError: 'numpy' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<string>", line 1, in <module> File "/tmp/pip-install-v7gyw8y_/pandas/setup.py", line 732, in <module> ext_modules=maybe_cythonize(extensions, compiler_directives=directives), File "/tmp/pip-install-v7gyw8y_/pandas/setup.py", line 475, in maybe_cythonize numpy_incl = pkg_resources.resource_filename('numpy', 'core/include') File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1144, in resource_filename return get_provider(package_or_requirement).get_resource_filename( File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 361, in get_provider __import__(moduleOrReq) ModuleNotFoundError: No module named 'numpy' ---------------------------------------- Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-v7gyw8y_/pandas/ (此版本在我的conda numpy环境中使用)移至pandas==0.20.3,并安装了它,日志显示:

py36

但是,在构建时间之后,运行容器会记录以下错误:

requirements.txt

所以它是由Successfully built: pandas Installing collected packages: pandas Successfully installed: pandas-0.20.3 安装的,但是找不到吗?

如何通过users_1 | File "/usr/src/app/project/api/classifiers/metadata/learn.py", line 14, in <module> users_1 | import pandas as pd users_1 | ModuleNotFoundError: No module named 'pandas' 安装pip,以保持我的数据科学项目的构建一致性?

1 个答案:

答案 0 :(得分:0)

Dockerfile-dev中添加以下行对我有用:

&& pip install --no-cache-dir $PYTHON_PACKAGES \
&& pip3 install 'pandas<0.21.0' \ # <-------------------- new line
&& apk del build-runtime \
&& apk add --no-cache --virtual build-dependencies $PACKAGES \

我必须明确指定pandas版本。