Alpine ERROR: unsatisfiable constraints: py3-pandas (missing):
Alpine ERROR: unsatisfiable constraints: py3-pandas (missing):
我有以下 dockerfile
:
FROM alpine:latest
ADD crontab.txt /crontab.txt
ADD script.sh /script.sh
COPY entry.sh /entry.sh
ADD app /app
RUN chmod 755 /script.sh /entry.sh
RUN /usr/bin/crontab /crontab.txt
# install dependencies
# the lapack package is only in the community repository
RUN echo "http://dl-8.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
&& apk update \
&& apk add --no-cache python3 py-pip py3-setuptools python-dev py3-lxml py3-requests py3-numpy py3-cssselect py3-pandas
RUN apk --update add --no-cache \
lapack-dev \
gcc \
freetype-dev
# Install dependencies
RUN apk add --no-cache --virtual .build-deps \
gfortran \
musl-dev \
g++
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h
#RUN pip3 install cython
RUN pip3 install pymongo xlrd
CMD ["/entry.sh"]
当我尝试构建 dockerfile 时,我收到错误消息 py3-pandas (missing)
。
我想知道这是否是 Alpine 包管理问题。
不要为 python 使用高山图像;问题太多了。使用类似 python:slim-buster 的东西。然后您可以使用以下命令安装您的要求:
FROM python:3.8.4-slim-buster
COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt
我可以重现您的问题:
FROM alpine:latest
RUN echo "http://dl-8.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
&& apk update \
&& apk add --no-cache py3-pandas
这里有一些评论:
- 如果您已经打算使用 edge/testing 软件包存储库,那么您最好使用
alpine:edge
图像,当然我不建议将其用于生产服务器
- 使用
apk
上的默认包存储库以外的另一个包存储库可以使用选项在一个 运行 的基础上完成
-X, --repository REPO Use packages from REPO
来自apk --help
- 包
python-dev
在 edge/testing 存储库中不存在,您应该使用 python3-dev
重要免责声明:此解决方案确实涉及使用 Alpine 的测试存储库和边缘滚动发布分支,and is thus not recommended for production use。
所以,最后,您可以安装所有依赖项:
FROM alpine:edge
RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \
py-pip \
py3-setuptools \
python3-dev \
py3-lxml \
py3-requests \
py3-numpy \
py3-cssselect \
py3-pandas \
lapack-dev \
gcc \
freetype-dev
请注意,我没有在此处添加构建依赖项,因为它们似乎与您手头的问题无关
我有以下 dockerfile
:
FROM alpine:latest
ADD crontab.txt /crontab.txt
ADD script.sh /script.sh
COPY entry.sh /entry.sh
ADD app /app
RUN chmod 755 /script.sh /entry.sh
RUN /usr/bin/crontab /crontab.txt
# install dependencies
# the lapack package is only in the community repository
RUN echo "http://dl-8.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
&& apk update \
&& apk add --no-cache python3 py-pip py3-setuptools python-dev py3-lxml py3-requests py3-numpy py3-cssselect py3-pandas
RUN apk --update add --no-cache \
lapack-dev \
gcc \
freetype-dev
# Install dependencies
RUN apk add --no-cache --virtual .build-deps \
gfortran \
musl-dev \
g++
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h
#RUN pip3 install cython
RUN pip3 install pymongo xlrd
CMD ["/entry.sh"]
当我尝试构建 dockerfile 时,我收到错误消息 py3-pandas (missing)
。
我想知道这是否是 Alpine 包管理问题。
不要为 python 使用高山图像;问题太多了。使用类似 python:slim-buster 的东西。然后您可以使用以下命令安装您的要求:
FROM python:3.8.4-slim-buster
COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt
我可以重现您的问题:
FROM alpine:latest
RUN echo "http://dl-8.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
&& apk update \
&& apk add --no-cache py3-pandas
这里有一些评论:
- 如果您已经打算使用 edge/testing 软件包存储库,那么您最好使用
alpine:edge
图像,当然我不建议将其用于生产服务器 - 使用
apk
上的默认包存储库以外的另一个包存储库可以使用选项在一个 运行 的基础上完成
来自-X, --repository REPO Use packages from REPO
apk --help
- 包
python-dev
在 edge/testing 存储库中不存在,您应该使用python3-dev
重要免责声明:此解决方案确实涉及使用 Alpine 的测试存储库和边缘滚动发布分支,and is thus not recommended for production use。
所以,最后,您可以安装所有依赖项:
FROM alpine:edge
RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing \
py-pip \
py3-setuptools \
python3-dev \
py3-lxml \
py3-requests \
py3-numpy \
py3-cssselect \
py3-pandas \
lapack-dev \
gcc \
freetype-dev
请注意,我没有在此处添加构建依赖项,因为它们似乎与您手头的问题无关