在 arm64 上使用 numpy 和 pandas 构建 docker 时出现问题
Problem building docker with numpy and pandas over arm64
我正在尝试在我的 ARM64 树莓派中使用 docker-compose 构建一个 docker 图像,但这似乎是不可能的。
这是我的docker文件:
FROM python:3.6-slim
RUN apt-get update && apt-get -y install python3-dev
RUN apt-get -y install python3-numpy
RUN apt-get -y install python3-pandas
ENTRYPOINT ["python3", "app.py"]
好像没问题,但是当app.py为运行时报错:"Module numpy not found",pandas模块也一样[=14] =]
如果我尝试使用 pip 安装 numpy 和 pandas:
RUN pip install numpy pandas
它给我一个错误,或者更常见的是,树莓刚刚冻结,我必须拔掉它才能恢复。
我尝试使用不同版本的 python 作为源图像,还使用了多个 ubuntu 图像并安装了 python。
知道如何在 docker 中为我的 raspberry pi (ARM64) 安装 numpy 和 pandas 吗?
谢谢
我建议创建 requirements.txt
文件。
在里面你可以声明要安装的包。
`Dockerfile':
FROM python
COPY app.py /workdir/
COPY requirements.txt /workdir/
WORKDIR /workdir
RUN pip install --trusted-host pypi.python.org -r requirements.txt
CMD python app.py
编辑
我创建 Dockerfile
导入 pandas 库,然后检查它是否工作:
cat Dockerfile
FROM python
COPY app.py /workdir/
WORKDIR /workdir
RUN python -m pip install pandas
CMD python app.py
问题似乎出在 python 版本上。我正在使用 python3.6 docker 图像,但是 python3-numpy 和 python3-pandas 包都需要 python3.5,因此,当安装这些软件包时,也会安装新版本的 python。这就是为什么当我尝试导入这些模块时 python 解释器找不到它们,因为它们是为另一个 python 版本安装的。
最后我使用通用 docker debian 映像解决了这个问题,并自己安装了 python3.5 而不是使用 python docker 映像。
FROM debian:stretch-slim
RUN apt-get update && apt-get -y dist-upgrade
RUN apt-get -y install build-essential libssl-dev libffi-dev python3.5 libblas3 libc6 liblapack3 gcc python3-dev python3-pip cython3
RUN apt-get -y install python3-numpy python3-sklearn
RUN apt-get -y install python3-pandas
COPY requirements.txt /tmp/
RUN pip3 install -r /tmp/requirements.txt
(免责声明:Raspberry Pi 3 B+ 可能太慢,无法安装像 numpy 这样的大型依赖项)
这个 Docker 文件在 Raspberry Pi 3 B+ 上为我工作,软件版本:Linux raspberrypi 5.10.63-v7+ (考虑更新它)
FROM python:3.9-buster
WORKDIR /
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
我不确定,但我认为它也有助于清理 docker,即使用以下命令删除所有图像和容器:
警告:此命令会删除所有图像和容器!
$ docker container prune
$ docker image prune -a
或完全重置 Docker(同时删除卷和网络):
$ docker system prune --volumes
我正在尝试在我的 ARM64 树莓派中使用 docker-compose 构建一个 docker 图像,但这似乎是不可能的。
这是我的docker文件:
FROM python:3.6-slim
RUN apt-get update && apt-get -y install python3-dev
RUN apt-get -y install python3-numpy
RUN apt-get -y install python3-pandas
ENTRYPOINT ["python3", "app.py"]
好像没问题,但是当app.py为运行时报错:"Module numpy not found",pandas模块也一样[=14] =]
如果我尝试使用 pip 安装 numpy 和 pandas:
RUN pip install numpy pandas
它给我一个错误,或者更常见的是,树莓刚刚冻结,我必须拔掉它才能恢复。
我尝试使用不同版本的 python 作为源图像,还使用了多个 ubuntu 图像并安装了 python。
知道如何在 docker 中为我的 raspberry pi (ARM64) 安装 numpy 和 pandas 吗?
谢谢
我建议创建 requirements.txt
文件。
在里面你可以声明要安装的包。
`Dockerfile':
FROM python
COPY app.py /workdir/
COPY requirements.txt /workdir/
WORKDIR /workdir
RUN pip install --trusted-host pypi.python.org -r requirements.txt
CMD python app.py
编辑
我创建 Dockerfile
导入 pandas 库,然后检查它是否工作:
cat Dockerfile
FROM python
COPY app.py /workdir/
WORKDIR /workdir
RUN python -m pip install pandas
CMD python app.py
问题似乎出在 python 版本上。我正在使用 python3.6 docker 图像,但是 python3-numpy 和 python3-pandas 包都需要 python3.5,因此,当安装这些软件包时,也会安装新版本的 python。这就是为什么当我尝试导入这些模块时 python 解释器找不到它们,因为它们是为另一个 python 版本安装的。
最后我使用通用 docker debian 映像解决了这个问题,并自己安装了 python3.5 而不是使用 python docker 映像。
FROM debian:stretch-slim
RUN apt-get update && apt-get -y dist-upgrade
RUN apt-get -y install build-essential libssl-dev libffi-dev python3.5 libblas3 libc6 liblapack3 gcc python3-dev python3-pip cython3
RUN apt-get -y install python3-numpy python3-sklearn
RUN apt-get -y install python3-pandas
COPY requirements.txt /tmp/
RUN pip3 install -r /tmp/requirements.txt
(免责声明:Raspberry Pi 3 B+ 可能太慢,无法安装像 numpy 这样的大型依赖项)
这个 Docker 文件在 Raspberry Pi 3 B+ 上为我工作,软件版本:Linux raspberrypi 5.10.63-v7+ (考虑更新它)
FROM python:3.9-buster
WORKDIR /
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
我不确定,但我认为它也有助于清理 docker,即使用以下命令删除所有图像和容器:
警告:此命令会删除所有图像和容器!
$ docker container prune
$ docker image prune -a
或完全重置 Docker(同时删除卷和网络):
$ docker system prune --volumes