尝试使用 python 和 pyodbc 准备基于 ubuntu 20.04 的图像时遇到预期问题。
FROM ubuntu:20.04
# install mssql odbc driver
RUN apt-get update && apt-get upgrade -y && apt-get install -y curl gnupg build-essential
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
&& curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql17 unixodbc-dev
# install python 3.7.9 from source
RUN apt-get install -y python3 python3-pip
# clean up
# this does not work
RUN apt-get remove -y perl curl gnupg && apt-get autoremove -y
# this works
# RUN apt-get remove -y curl gnupg && apt-get autoremove -y
RUN pip3 install pyodbc
如果不去掉perl,pyodbc的安装是平安无事的,但是如果去掉perl,会报如下错误:src/pyodbc.h:56:10: fatal error: sql.h: No such file or directory
好像 unixodbc-dev 也由于某种原因被删除了。有没有人遇到过这个?如果需要 perl,不会 apt-get
防止它被删除?或者我需要安装一组不同的 c 绑定(bind)来完成这项工作。也在运行
apt-get install -f
安装 msodbcsql17 后也无济于事。谢谢。
最佳答案
unixodbc-dev
被安装为传递依赖,并在不再需要时自动删除,即在删除 perl 之后。您需要明确安装它:
RUN apt-get install -y unixodbc-dev
有关详细信息,请参阅以下错误报告:https://github.com/mkleehammer/pyodbc/issues/441
关于python - 从 ubuntu docker 镜像中删除 perl 会导致 pyodbc 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64507355/